1つ目のコードのバリデーションが表示されず、1桁の数字または91〜99の数字をパスワードに入力するとフォーム画面に戻ってしまいます。
上:index.php
下:login.php
よろしくお願い致します。
php
1<?php 2 $errors = array(); 3 4 if(isset($_POST['submit']) && $_POST['submit'] === "submit"){ 5 $pass = $_POST['pass']; 6 7 if($pass > 90 && $pass <= 99){ 8 $errors['pass'] = "該当する番号がありません。"; 9 }elseif ($pass < 10) { 10 $errors['pass'] = "2桁で入力してください。"; 11 }elseif (preg_match("/^[0-9]+$/", $pass)) { 12 $pass = $pass; 13 }else{ 14 $errors['pass'] = "半角数字のみで入力してください。"; 15 } 16 } 17?> 18 19<html> 20 <head> 21 </head> 22 <body> 23 <form action="login.php" method="post"> 24 <input type="password" name="pass" size="20" maxlength="2" placeholder="(例)10" required > 25 <?php 26 foreach ($errors as $message) { 27 echo $message; 28 } 29 ?> 30 <input type="submit" value="submit" name="submit"> 31 </form> 32 </body> 33</html> 34
php
1<?php 2 session_start(); 3 4 // ログインボタンが押されたかを判定 5 if (isset($_POST['submit'])) { 6 // passがaか判定 7 if ($_POST['pass'] > 9 and $_POST['pass'] <= 40){ 8 // パスワード内容をセッションに保存 9 $_SESSION['pass'] = $_POST['pass']; 10 header('Location: http://localhost/Task3/a.php'); 11 exit; 12 // passがbか判定 13 }elseif ($_POST['pass'] > 40 and $_POST['pass'] <= 70) { 14 // パスワード内容をセッションに保存 15 $_SESSION['pass'] = $_POST['pass']; 16 header('Location: http://localhost/Task3/b.php'); 17 exit; 18 // passがcか判定 19 }elseif ($_POST['pass'] > 70 and $_POST['pass'] <= 90) { 20 // パスワード内容をセッションに保存 21 $_SESSION['pass'] = $_POST['pass']; 22 header('Location: http://localhost/Task3/c.php'); 23 exit; 24 }else{ 25 header('Location: http://localhost/Task3/index.php'); 26 exit; 27 } 28} 29?> 30 31
回答2件
あなたの回答
tips
プレビュー