###前提・実現したいこと
アンケートフォームを作り、
同じページでエラーの確認をしてから
確認画面を開く→送信
ということをしようとしています。
###発生している問題・エラーメッセージ
NoticeやWarning等のエラーメッセージは出ないですが、 バリデーションによるエラーメッセージが出ない状況です。
###該当のソースコード
PHP
1<?php 2session_start(); 3$errors = array(); 4$gender = ""; 5$attribute = ""; 6$attribute_custom = ""; 7$age10 = ""; 8$age1 = ""; 9$like = ""; 10 11 12 13 14 15if (isset($_POST["submit"]) && $_POST["submit"] === "確認する") { 16 $gender = $_POST['gender']; 17 $attribute = $_POST['attribute']; 18 $age10 = $_POST['age10']; 19 $age1 = $_POST['age1']; 20 $like = $_POST['like']; 21 if ($gender === "") { 22 $errors['gender'] = "性別が入力されていません。"; 23 } elseif (($gender !== "m") && ($gender !== "f") && ($gender !== "X")) { 24 $errors['gender'] = "不正なPOSTです。"; 25 } 26 27 if ($attribute === "") { 28 $errors['attribute'] = "属性が入力されていません。"; 29 } elseif (htmlspecialchars(ctype_digit(strval($attribute)), ENT_QUOTES) == false) { 30 $errors['attribute'] = "不正なPOSTです。"; 31 } elseif (intval($attribute) > 21) { 32 $errors['attribute'] = "不正なPOSTです。"; 33 } 34if (intval($attribute) == 21) { 35$attribute_custom = $_POST['attribute_custom']; 36} 37 if (($attribute_custom == "") && (intval($attribute) == 21)) { 38 $errors['attribute_custom'] = "属性が入力されていません。"; 39 } 40 if (preg_replace("/^( \n)|( \n)$/", "", $attribute_custom) == false) { 41 $errors['attribute_custom'] = "属性が入力されていません。"; 42 } else { 43 $attribute_custom = htmlspecialchars(($attribute_custom), ENT_QUOTES); 44 } 45 46 47 if ($age10 === "") { 48 $errors['age10'] = "年齢(10の位)が入力されていません。"; 49 } elseif (htmlspecialchars(ctype_digit(strval($age10)), ENT_QUOTES) == false) { 50 $errors['age10'] = "不正なPOSTです。"; 51 } elseif (intval($age10) > 10) { 52 $errors['age10'] = "不正なPOSTです。"; 53 } 54 55 if ($age1 === "") { 56 $errors['age1'] = "年齢(1の位)が入力されていません。"; 57 } else { 58 if (htmlspecialchars(ctype_digit(strval($age1)), ENT_QUOTES) == false) { 59 $errors['age1'] = "不正なPOSTです。"; 60 } else { 61 if (intval($age1) > 9) { 62 $errors['age1'] = "不正なPOSTです。"; 63 } 64 } 65 } 66 67 if ($like === "") { 68 $errors['like'] = "○○が入力されていません。"; 69 } elseif (htmlspecialchars(ctype_digit(strval($like)), ENT_QUOTES) == false) { 70 $errors['like'] = "不正なPOSTです。"; 71 } elseif (intval($like) > 5) { 72 $errors['like'] = "不正なPOSTです。"; 73 } 74 75 if (!count($error)) { 76 $_SESSION = $_POST; 77 header("Location: ./check-att.php"); 78 exit(); 79 }else {echo "<ul>"; 80 81 echo "<li>"; 82 echo $errors['gender']; 83 echo "</li>"; 84 echo "<li>"; 85 echo $errors['attribute']; 86 echo "</li>"; 87 echo "<li>"; 88 echo $errors['attribute_custom']; 89 echo "</li>"; 90 echo "<li>"; 91 echo $errors['age10']; 92 echo "</li>"; 93 echo "<li>"; 94 echo $errors['age1']; 95 echo "</li>"; 96 echo "<li>"; 97 echo $errors['like']; 98 echo "</li>"; 99 echo "</ul>";} 100} 101 102?>
HTML
1 <form action="" method="post" autocomplete="off"> 2性別 3 <input type="radio" name="gender" value="m" id="m"><label for="m">男性</label> 4 <input type="radio" name="gender" value="f" id="f"><label for="f">女性</label> 5 <input type="radio" name="gender" value="X" id="X"><label for="X">その他</label> 6属性 7 <input type="checkbox" name="attribute" value="1" id="1"><label for="1">1</label><br><br> 8 <input type="checkbox" name="attribute" value="2" id="2"><label for="2">2</label><br><br> 9 <input type="checkbox" name="attribute" value="3" id="3"><label for="3">3</label><br><br> 10 //同じようなコード 11 <input type="checkbox" name="attribute" value="21" id="21"><label for="21">21/label><br><br> 12 <input type="checkbox" name="attribute" value="22" id="other"><label for="other">その他</label><br><br> 13<input type="text" name="attribute_custom" placeholder="カスタム" value="" id="attribute-custom"> 14//その他を押すとテキストの欄が開き、その他以外の欄は無効になります 15年齢 16 <select name="age10" required> 17 <option value="0">0</option> 18 <option value="1">1</option> 19 <option value="2">2</option> 20 <option value="3">3</option> 21 <option value="4">4</option> 22 <option value="5">5</option> 23 <option value="6">6</option> 24 <option value="7">7</option> 25 <option value="8">8</option> 26 <option value="9">9</option> 27 <option value="10">10</option> 28 </select> 29 30 <select name="age1" required> 31 <option value="0">0</option> 32 <option value="1">1</option> 33 <option value="2">2</option> 34 <option value="3">3</option> 35 <option value="4">4</option> 36 <option value="5">5</option> 37 <option value="6">6</option> 38 <option value="7">7</option> 39 <option value="8">8</option> 40 <option value="9">9</option></select><br> 41選択式質問 42 <input type="radio" name="like" value="0"><label>0</label> 43 <input type="radio" name="like" value="1"><label>1</label> 44 <input type="radio" name="like" value="2"><label>2</label><br> 45 <input type="radio" name="like" value="3"><label>3</label> 46 <input type="radio" name="like" value="4"><label>4</label> 47 <input type="radio" name="like" value="5"><label>5</label></p> 48
###試したこと
出来る限りは調べて実践したのですが、
どれを参考にしても無理でした。
###補足情報(言語/FW/ツール等のバージョンなど)
エディタ:Atom 1.18.0
回答4件
あなたの回答
tips
プレビュー