前提
PHPを使用して、お問い合わせフォームのバリデーションチェックを行いたいです。
見よう見まねでいろんなとこからコードを引っ張ってきて、作ったのですが、
表示してくれません。。
発生している問題・実現したいこと
メールアドレスとコメントは、1文字でも入力すれば送信ができてしまう。
エラーコードをしっかりと表示させたい。
該当のソースコード
PHP
1<?php 2 3error_reporting(E_ALL); //E_STRICTレベル以外のエラーを報告する 4ini_set('display_errors','On'); //画面にエラーを表示させるか 5 6if(!empty($_POST)){ 7 8 //エラーメッセージを定数に設定 9 define('MSG01','入力必須です'); 10 define('MSG02','Emailの形式で入力してください'); 11 define('MSG03','10文字以上で入力してください'); 12 13 $err_msg = array(); 14 15 if(empty($_POST['email'])){ 16 17 $err_msg['email'] = MSG01; 18 19 } 20 if(empty($_POST['comment'])){ 21 22 $err_msg['comment'] = MSG01; 23 24 } 25 26 if(empty($err_msg)){ 27 28 //変数にユーザー情報を代入 29 $email = $_POST['email']; 30 $comment = $_POST['comment']; 31 32 //emailの形式でない場合 33 $reg_str = "/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/"; 34 if(!preg_match($reg_str, $email)){ 35 $err_msg['email'] = MSG02; 36 } 37 //commentが10文字以上でないの場合 38 if(!mb_strlen($comment) >= 10) { 39 $err_msg['comment'] = MSG03; 40 } 41 header("Location:send.php"); 42 } 43} 44?>
HTML
1 <form action="" method="post"> 2 <p> 3 <label>お名前(任意): 4 <input type="text" name="name"> 5 </label> 6 </p> 7 <p> 8 <label>メールアドレス(必須):<span class="err_msg"><?php if(!empty($err_msg['email'])) echo $err_msg['email']; ?></span> 9 <input type="text" name="email" placeholder="***@***.***"> 10 </label> 11 </p> 12 <p> 13 <label>コメント(必須):<span class="err_msg"><?php if(!empty($err_msg['comment'])) echo $err_msg['comment']; ?></span> 14 <textarea name="comment"></textarea> 15 </label> 16 </p> 17 <p><input type="submit" value="送信"></p> 18 </form>
試したこと
textareaのvalueが取得できないのかな?と思って検索してみたり、
メールアドレスの正規表現がダメなのかと思って検索したりしましたが、
おそらくあっていると思い、質問しました。
補足情報(FW/ツールのバージョンなど)
MAMPのローカル環境にて行いました。
他に補足必要であれば教えていただきたいです。
回答1件
あなたの回答
tips
プレビュー