##PHPのバリデーション
##PHPのバリデーションで名前の欄から入力エラーを出したいのですが、先にメール欄からのエラーメッセージが発生します。
名前入力欄のエラーが後回しになっている
メールアドレスの形式が不明です ↑↑これから先に出てしまい困っています
該当のソースコード
<?php session_start(); $err = []; $char = []; $alpha = []; $many = []; $_SESSION = $_POST; function validation_name($name){ if ( strlen($name) > 5) { $many[] = "文字数が多すぎます"; return $many; } } function validation_email($email){ if ( $email == "" ) { $err[] = "メールアドレスを入力してください"; return $err; // 検証フィルタメールが正しくない場合実行処理 }elseif (!filter_var($_SESSION["email"], FILTER_VALIDATE_EMAIL)){ $err[] = "メールアドレスの形式が不明です"; return $err; } } if (isset($_POST["send"])) { unset($_POST); $char = validation_name($_SESSION["name"]); $alpha = validation_email($_SESSION["email"]); // 入力が正常の場合戻り値がNULLのためNULLでない場合$errに代入する if($char !== NULL) ($err = $char); if($alpha !== NULL) ($err = $alpha); if(count($err) === 0){ header("Location:confirm.php"); } } ?> <!DOCTYPE html> <html lang="ja" dir="ltr"> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php if($err >= 0){ echo "<ul>"; foreach ($err as $error) { echo "<p>$error</p>"; } echo "</ul>"; }?> <form action="input.php" method="post"> <table> <tr> <h1>名前</h1> <input type="text" name="name" value="<?php echo ($_SESSION["name"])?$_SESSION["name"]: "" ?>"> </tr> <tr> <h1>メールアドレス</h1> <input type="text" name="email" value="<?php echo ($_SESSION["email"])?$_SESSION["email"]: "" ?>"></br> <div> <input type="submit" name="send"value="送信する"> </div> </tr> </table> </form> </body> </html>
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/07 06:38
2019/02/07 06:40
2019/02/07 06:44