初心者です。PHPを実行したところ思ったような結果になりませんでした。調べても何が間違っているのか分からないのでお力をお貸しいただければと思います。どうぞよろしくお願いいたします。
作りたいもの、問題点
作りたいものはpass.phpでパスワードを入力すると特別ページtest.phpに飛び、間違えるとmiss.phpにエラーメッセージが出る仕組みです。今のところ正しいパスワードを入れると問題なく動きます。
問題点は、どう間違えてもelseifの一番上の文字がechoされることです。やりたいのは、空欄ではmissと出、半角英数字以外、4字以上でそれぞれのエラーメッセージを個別に出したいです。なぜ一番目しかechoされないのでしょうか?
###pass.php
html
1<form action="./miss.php" method="post"> 2 <input type="text" name="pass"> 3 <input type="submit" value="Enter"> 4</form>
miss.php
php
1<?php 2// パスワードを設定する。 3$pass = 1234; 4// パスワードを受け取る 5$form_pass = $_REQUEST["pass"]; 6// 値が$form_passと等しいか評価する 7if($form_pass == $pass){ 8 header("location: /test.php");} 9?> 10<html> 11<body> 12 <main> 13<?php 14if($form_pass == $pass){ 15}else if(empty($data['pass'])){ 16 echo"<p class=\"align-center\">miss! Try again.</p><br>", 17 "<ul class=\"actions special\"> 18 <li><a id=\"btn_home\" href=\"javascript:history.back()\" class=\"button\">Back</a></li></ul>"; 19 } else if(!preg_match( '/^[0-9a-z-]+$/', $data['pass'])) { 20 echo "<p class=\"align-center\">Please type using half-width characters.</p><br>", 21 "<ul class=\"actions special\"> 22 <li><a id=\"btn_home\" href=\"javascript:history.back()\" class=\"button\">Back</a></li></ul>"; 23 } elseif( 4 < mb_strlen($data['pass']) ) { 24 echo "<p class=\"align-center\">Please input 4 characters.</p><br>", 25 "<ul class=\"actions special\"> 26 <li><a id=\"btn_home\" href=\"javascript:history.back()\" class=\"button\">Back</a></li></ul>"; 27 }else{ 28 echo"<p class=\"align-center\">miss! Try again.</p><br>", 29 "<ul class=\"actions special\"> 30 <li><a id=\"btn_home\" href=\"javascript:history.back()\" class=\"button\">Back</a></li></ul>"; 31 } 32?> 33</main> 34</body> 35</html>
ご教授いただけますと大変助かります。よろしくお願いいたします。
補足情報(ツールのバージョンなど)
chrome最新版、
回答3件
あなたの回答
tips
プレビュー