以下は、お問合せフォームより値を受け取った場合のバリデーション処理を作成しているコードになります。
疑問点としましては、フォームの年齢に、何も入力せず送信した場合に、「if($age != 0){」ここの部分がtrueにならない点です。
$ageの値は「0」でないにも関わらず、falseになってしまう理由が分かりません。
<?php $errors = []; $name = filter_input(INPUT_POST,'name'); // $age = filter_input(INPUT_POST,'age'); $age = filter_input(INPUT_POST,'age'); strval($age); if($age != 0){ echo __LINE__; if(!$age){ $errors[] = '年齢が入力されていません'; echo __LINE__; }else{ $age = mb_convert_kana($age,'n','UTF-8'); $age = filter_var($age, FILTER_VALIDATE_INT); var_dump($age); if(!$age){ $errors[] = '年齢は数字を入力してください'; echo __LINE__; } } }else{ echo __LINE__; } if(isset($_POST['color']) && is_array($_POST['color'])){ $color = $_POST['color']; }else{ $errors[] = 'チェックされていません'; } if(!$name){ $errors[] = '名前が入力されていません'; } ?>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>test</title> </head> <body> <form action="validation.php" method="post"> <p>名前:<input type="text" name="name"></p> <p>年齢:<input type="text" name="age"></p> <p> 好きな色: <input type="checkbox" name="color[]" value="red">赤 <input type="checkbox" name="color[]" value="blue">青 <input type="checkbox" name="color[]" value="green">緑 <input type="checkbox" name="color[]" value="other">その他 </p> <input type="submit" value="送信"> </form> </body> </html>
strval()の返り値とってないので何の効果も発揮してませんがこれは?
また入力フォーム部分のhtmlもご提示ください。
あと「何をageに入力したのか」「どういうパターンを試してどういう結果になったのか」も具体的に記載してください
strvalは使うか使わないかで迷っているんですよね...
取り敢えず、返り値の変数を付け忘れていたので、そこの部分修正しておきます
文字列として受け取った方が操作しやすいかなと思ったのですが、もしかしたら、いらなかったかもしれないです...
formから送信される情報は何を入力しようと文字列です。
10と入力してもintの10ではなくStringの"10"が送られてきます。なので、不要です
回答2件
あなたの回答
tips
プレビュー