PHP、HTMLを使って問い合わせフォームを以下のソースコードで作っています。バリデーションの関数化をしています。このソースコードでページを開くと、最初からエラーメッセージが出てしまいます。var_dumpで$_POST["send"]の値を調べてみるとずっとsendに値が入っています。
ページを開いた際にいきなりエラーメッセージがでないようにしたいのですが、どうしたらよろしいのでしょうか?
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> </head> <?php session_start(); $errMsgList = []; function inputName($inputData){ $errorMsg; if($inputData === ""){ $errorMsg = "名前が入力されていません"; return $errorMsg; } return NULL; } function inputMail($inputData){ $errorMsg; if($inputData === ""){ $errorMsg = "メールアドレスが入力されていません"; return $errorMsg; } return NULL; } function stringSize($inputData){//20字以下か判定 if(strlen($inputData)>20) { $errorMsg = "名前は20文字以下で入力してください"; return $errorMsg; } return NULL; } function mailcheck($inputData){ if(!preg_match( '/^[0-9a-z_./?-]+@([0-9a-z-]+.)+[0-9a-z-]+$/', $inputData)){ $errorMsg = "正しいメールアドレスを入力してください"; return $errorMsg; } return NULL; } if (isset($_POST['send'])) { $_SESSION = $_POST; if(inputName($_SESSION["name"]) !== NULL){ $errMsgList[] = inputName($_SESSION["name"]); } if(inputMail($_SESSION["email"]) !== NULL){ $errMsgList[] = inputMail($_SESSION["email"]); } if(stringSize($_SESSION["name"]) !== NULL){ $errMsgList[] = stringSize($_SESSION["name"]); } if(mailcheck($_SESSION["email"]) !== NULL){ $errMsgList[] = mailcheck($_SESSION["email"]); } } if (count($errMsgList) == 0) { header('Location: confirm-s.php'); } ?> <body> <?php if ($errMsgList >= 0) { echo '<ul>'; foreach ($errMsgList as $errMsg) { echo "<p>$errMsg</p>"; } echo '</ul>'; var_dump($_POST['send']); } ?> <form method="post"action="input.php"> <table> <tr> <td><p>名前</p></td> <td> <input type="text" name="name" value="<?php echo isset($_SESSION['name']) ? $_SESSION['name'] : ''; ?>" > </td> </tr> <tr> <td><p>メールアドレス</p></td> <td> <input type="text" name="email" value="<?php echo isset($_SESSION['email']) ? $_SESSION['email'] : '';?>" > </td> </tr> <tr> <td></td> <input type="hidden" name="send" value="送信"> <td><input type="submit" value="送信する"></td> </table> </form> </div> </body> </html>
回答2件
あなたの回答
tips
プレビュー