Jun18:一通り作ったスクリプト

一通りスクリプトを作ってみたんで表示します。

<?php

$array = array("--","北海道","青森県","秋田県","岩手県","宮城県","山形県","福島県","茨城県","栃木県","群馬県",">埼玉県","千葉県","東京都","神奈川県","新潟県","富山県","石川県","福井県","山梨県","長野県","岐阜県","静岡県","愛知県","三重県","滋賀県","京都府","大阪府","奈良県","和歌山県","兵庫県","鳥取県","島根県","岡山県","広島県","山口県","徳島県","香川県","愛媛県","高知県","福島県","長崎県","福岡県","佐賀県","熊本県","大分県","鹿児島県","沖縄県",);

$error = array();

$view = "top";

$check = "/^[^@]+@([-a-z0-9]+\.)+[a-z]{2,}$/";


//[^@]+@→@意外の文字の1回以上の繰り返しの次に@がある。
//([-a-z0-9]+\.)+→ハイフンと小文字英字と数字の1回以上の繰り返しの次に.がある。さらにそれが1回以上繰り返される。
//[a-z]{2,}$→最後の2文字以上の小文字英数字で終わる。


/////エラーチェック&trimフィルタ欄/////////


if(isset($_POST["confirm"])){

    if(isset($_POST["lastname"])){
        $lastname = trim($_POST["lastname"]);
            if(!mb_strlen($lastname)){
                $error[]="姓を入力してください。<br>";
            }elseif(mb_strlen($lastname) > 50){
                $error[]="姓は50文字以内で入力してください。<br>";
            }
    }
    if(isset($_POST["firstname"])){
        $firstname = trim($_POST["firstname"]);
        if(!mb_strlen($firstname)){
            $error[]="名を入力してください。<br>";
        }elseif(mb_strlen($firstname)>50){
            $error[]="名は50文字以内で入力してください。<br>";
        }
    }
    if(isset($_POST["lastnamekana"])){
        $lastnamekana = trim($_POST["lastnamekana"]);
        if(!mb_strlen($lastnamekana)){
            $error[]="フリガナ(姓)を入力してください。<br>";
        }elseif(mb_strlen($lastnamekana)>50){
            $error[]="フリガナ(姓)は50文字以内で入力してください。<br>";
        }
    }
    if(isset($_POST["firstnamekana"])){
        $firstnamekana = trim($_POST["firstnamekana"]);
        if(!mb_strlen($firstnamekana)){
            $error[]="フリガナ(名)を入力してください。<br>";
        }elseif(mb_strlen($firstnamekana)>50){
            $error[]="フリガナ(名)は50文字以内で入力してください。<br>";
        }
    }
    if(!isset($_POST["sex"])){
        $error[]="性別を選択して下さい。<br>";
    }

    if(!mb_strlen($_POST["zip1"]) || !mb_strlen($_POST["zip2"])){
          $error[] = "郵便番号を入力してください。<br>";
    }else{
        $zip1 = mb_convert_kana($_POST["zip1"],"rn");
        $zip2 = mb_convert_kana($_POST["zip2"],"rn");

        if(!preg_match("/^[0-9]{3}$/", $zip1) || !preg_match("/^[0-9]{4}$/", $zip2)) {
            $error[] = "郵便番号を正しく入力してください。<br>";

        }
    }
    if(isset($_POST["prefid"])){
        if($_POST["prefid"] == 0){
            $error[]="都道府県を選択してください。<br>";
        }
    }
    if(isset($_POST["address1"])){
        $address1 = trim($_POST["address1"]);
            if(!mb_strlen($address1)){
                $error[]="市区町村を入力してください。<br>";
            }elseif(mb_strlen($address1)>50){
                $error[]="市区町村は50文字以内で入力してください。<br>";
            }
    }
    if(isset($_POST["address2"])){
        $address2 = trim($_POST["address2"]);
            if(!mb_strlen($address2)){
                $error[]="番地を入力してください。<br>";
            }elseif(mb_strlen($address2)>50){
                $error[]="番地は50文字以内で入力してください。<br>";
            }
    }
    if(isset($_POST["mail_address"])){
        $mail_address = trim($_POST["mail_address"]);
            if(!mb_strlen($mail_address)){
                $error[]="メールアドレスを入力してください。<br>";
            }elseif(mb_strlen($mail_address)>50){
                $error[]="メールアドレスは50文字以内で入力してください。<br>";

            }elseif(!preg_match($check,$mail_address)){
                $error[]="メールアドレスを正しく入力してください。<br>";
            }else{
                $mail_address = mb_convert_kana($mail_address,"a");
            }
    }
    if(isset($_POST["other"])){
        $other = trim($_POST["other"]);
        if(mb_strlen($_POST["other"])){
             $_POST["h_array"][2] = 3;
        }
    }if(!isset($_POST["h_array"])){
            $error[]="趣味を一つ以上選択してください。<br>";
        }elseif(isset($_POST["h_array"][2])){
            if(count($_POST["h_array"][2]) && !mb_strlen($_POST["other"])){
            $error[]="その他詳細を入力してください。<br>";
        }
    }

////////分岐//////////////////////////////
    if(count($error) >0){
        $view = "top";
    }
    else{
        $view = "confirm";
    }
}
if($view == "confirm"){
?>

<!---------------------------------確認ページ------------------------>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<title>
○×キャンペーン
</title>
</head>

<body>

<div align="center"><font color="#00BFFF">○×キャンペーン</font></div>
<hr size="3">
<div align="center">入力内容確認</div>
<hr size="3">

<font size="2">下記の項目に入力の上、完了画面にお進みください。(*)は必須項目です。</font>
<br>

<form action="plactice3.php" method="post">
姓(*):<br>
<?php

echo htmlspecialchars($lastname);

?>
<input type="hidden" name="lastname" value="<?php echo htmlspecialchars($lastname);?>">


<br>
名(*):<br>
<?php
print htmlspecialchars($firstname)."<br>";
?>


<input type="hidden" name="firstname" value="<?php echo htmlspecialchars($firstname);?>">
<br>
フリガナ(姓)(*):<br>
<?php
print htmlspecialchars(mb_convert_kana($lastnamekana,"KVC"))."<br>";
?>

<input type="hidden" name="lastnamekana" value="<?php echo htmlspecialchars($lastnamekana);?>">
<br>
フリガナ(名)(*):<br>
<?php
print htmlspecialchars(mb_convert_kana($firstnamekana,"KVC"))."<br>";
?>


<br>

<input type="hidden" name="firstnamekana" value="<?php echo htmlspecialchars($firstnamekana);?>">
性別(*):<br>

<?php
if(isset($_POST["sex"])){
    $name = $_POST["sex"];
        if($name == 1){
            print ("男<br />");
        }elseif($name == 2){
            print ("女<br />");
        }
}
?>


<input type="hidden" name="sex" value="<?php echo $_POST["sex"];?>">
<br>
郵便場号(半角数字)(*)<br>

<?php

   print trim($zip1);
   print_r ("-");
   print trim($zip2)."<br>";


?>


<input type="hidden" name="zip1" value="<?php echo htmlspecialchars($zip1);?>">

<input type="hidden" name="zip2" value="<?php echo htmlspecialchars($zip2);?>">
<br>
都道府県(*):<br>

<?php

$name = $_POST["prefid"];
$prefid = $array[$name];
print $prefid."<br>";
?>
<br>

<input type="hidden" name="prefid" value="<?php echo $_POST["prefid"];?>">
市区町村(*):<br>


<?php
print htmlspecialchars($address1)."<br>";
?>
<br>

<input type="hidden" name="address1" value="<?php echo htmlspecialchars($address1);?>">
番地:<br>

<?php
print htmlspecialchars($address2)."<br>";
?>
<br>

<input type="hidden" name="address2" value="<?php echo htmlspecialchars($address2);?>">

メールアドレス(*):<br>

<?php
print htmlspecialchars($mail_address)."<br>";
?>
<br>

<input type="hidden" name="mail_address" value="<?php echo htmlspecialchars($mail_address);?>">
趣味(*):<br>

<?php


if(isset($_POST["h_array"]) && count($_POST["h_array"]) > 0){
    $h_array = $_POST["h_array"];
        foreach($h_array as $value){
            if($value == 1){
                 print ("音楽<br />");
                 echo '<input type="hidden" name="h_array[0]" value="1">';

            }elseif($value == 2){
                 print ("映画<br />");

                 echo '<input type="hidden" name="h_array[1]" value="2">';
            }elseif($value == 3){
                 echo "その他(".htmlspecialchars($other).")";
                 echo '<input type="hidden" name="h_array[2]" value="3">';
            }
        }
}
?>
<br>
<input type="hidden" name='other' value="<?php echo htmlspecialchars($other);?>">
ご意見:<br>

<?php
$name = htmlspecialchars($_POST["comment"]);

print trim($name);
?>

<br>

<input type="hidden" name="comment" value="<?php echo htmlspecialchars($_POST['comment']);?>">
<div align="center">
<table>
<tr>
<td><input type="submit" value="戻る" name="return"></td>
<td><input type="submit" value="確認" name="complete"></td>
</tr>
</table>
</div>
</form>
<hr size="3">
<div align="center">(C)2009 Training Project</div>
</body>
</html>
<?php


}elseif($view == "top"){
?>

<!--TOPページ-->

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html lang="ja">
<head>
<title>
○×キャンペーン
</title>
</head>

<body link="#ff0000">

<div align="center"><font color="#00BFFF">○×キャンペーン</font></div>
<hr size="3">
<div align="center">応募フォーム</div>
<hr size="3">

<p><font size="2">下記の項目に入力のうえ、確認画面にお進みください。(*)は必須項目です。</font></p>
<form method="post" action="plactice3.php">
<?php
if(isset($error)){
    foreach($error as $key=> $value){
        echo "<font color=\"#ff0000\">".$value."</font>";
    }
}

?>
姓(*):<br>
<br>
<input type="text" size="45" name="lastname" value="<?php
if(isset($_POST["lastname"])){
   echo htmlspecialchars($_POST["lastname"]);
}
?>"><br>
名(*):<br>
<br>
<input type="text" size="45" name="firstname" value="<?php
if(isset($_POST["firstname"])){
    echo htmlspecialchars($_POST["firstname"]);
}
?>"><br>
フリガナ(姓)(*):<br>
<br>
<input type="text" size="45" name="lastnamekana" value="<?php
if(isset($_POST["lastnamekana"])){
   echo htmlspecialchars(mb_convert_kana($_POST["lastnamekana"],"KVC"));
}
?>"><br>
フリガナ(名)(*):<br>
<br>
<input type="text" size="45" name="firstnamekana" value="<?php
if(isset($_POST["firstnamekana"])){
    echo htmlspecialchars(mb_convert_kana($_POST["firstnamekana"],"KVC"));
}
?>"><br>
<br>

性別(*):<br>
男<input type="radio" name="sex" value="1"

<?php
if(isset($_POST["sex"])){
    $name = $_POST["sex"];


    if($name == 1){
        echo "checked";
    }elseif($name == 3){
        echo "checked";
    }
}
?>

>
女<input type="radio" name="sex" value="2"

<?php

if(isset($_POST["sex"])){
    $name = $_POST["sex"];
        if($name == 2){
            echo "checked";
        }
}
?>>

<br>
<br>
郵便番号(半角数字)(*):<br>
<input type="text" size="3" maxlength="3" name="zip1" value="
<?php
if(isset($_POST["zip1"])){
    echo htmlspecialchars($_POST["zip1"]);
}
?>">
-
<input type="text" size="4" maxlength="4" name="zip2" value="
<?php
if(isset($_POST["zip2"])){
    echo htmlspecialchars($_POST["zip2"]);
}
?>"><br>
<br>
都道府県(*):<br>
<select name="prefid">
<?php

foreach($array as $key => $value){

if(isset($_POST["prefid"]) && $key == $_POST["prefid"]){
        echo "<option value='$key' selected>".$value."</option>";
    }else{
        echo "<option value='$key'>".$value."</option>";
    }
}
?>

</select>
<br>
市区町村(*):<br>
<input type="text" size="45" name="address1" value="
<?php
if(isset($_POST["address1"])){
    echo htmlspecialchars($_POST["address1"]);
}
?>"><br>
<br>
番地(*):<br>
<input type="text" size="45" name="address2" value="
<?php
if(isset($_POST["address2"])){
    echo htmlspecialchars($_POST["address2"]);
}?>"><br>
<br>
メールアドレス(*):<br>
<br>
<input type="text" size="45" name="mail_address" value="
<?php
if(isset($_POST["mail_address"])){
    echo htmlspecialchars($_POST["mail_address"]);
}
?>"><br>
<br>
趣味(*):<br>
<?php

?>

<input type="checkbox" name="h_array[0]" value="1"
<?php

if(isset($_POST["h_array"][0])){
   echo "checked";
}
?>

>音楽<input type="checkbox" name="h_array[1]" value="2"
<?php
if(isset($_POST["h_array"][1])){
    echo "checked";
        }
?>
>映画<br><input type="checkbox" name="h_array[2]" value="3"
<?php
if(isset($_POST["h_array"][2])){
    echo "checked";
}elseif(isset($_POST["other"])){
   if(mb_strlen($_POST["other"])){
      echo "checked";
   }
}
?>
>その他<br>
<input type="text" size="45" name="other" value="<?php
if(isset($_POST["other"])){
    echo htmlspecialchars($_POST["other"]);
}
?>"><br>

<br>ご意見:<br>
<textarea name="comment" rows="3" cols="10">
<?php
if(isset($_POST["comment"])){
    echo htmlspecialchars($_POST["comment"]);
}
?></textarea>

<br>
<div align="center"><input type="submit" name="confirm" value="確認"></div>
</form>
<hr size="2">
<div align="center">(C)2009 Training Project</div>

</body>
</html>

<?php
}if(isset($_POST["complete"]) && count($_POST["complete"]) > 0){

?>

<!----------------完了ページ-------------------------->


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html lang="ja">
<head>
<title>
○×キャンペーン
</title>
</head>

<body link="#ff0000">

<div align="center"><font color="#00BFFF">○×キャンペーン</font></div>
<hr size="3">
<font size="2">ご応募ありがとうございました。</font><br>
<br>
<div align="center"><a href="index.html"><font size="2">TOPへ</font></a></div><br>
<br>
<hr size="2">
<div align="center">(C)2009 Training Project</div>
</body>
</html>

<?php
}
?>


汚い表記でごめんなさい。もじご指摘あれば是非コメントしてください。

ちなみに、ずっとひっかかってたことだったんですが、これらのフォームを全部空で送信したら当然エラーが帰ってくるのだけども、その時の$_POSTの配列は、


テキストボックス:$_POST["name"]のキーは存在して、値が存在していない(NULL)の状態。
チェックボックス、セレクトボックス、ラジオボタン:そもそもキーも存在していない状態。

なんで、issetとか、countとかを使う時は注意する。

また、インデントとかを活用して、他の人がわかりやすい書き方を心がけよう。