- ベストアンサー
半角英数判定
こんにちわ。最近PHPをやりはじめた者です。 下記のスクリプトを使用して空白判定はできたのですが、半角英数文字 を判定できなくて困っています。エラーが出てしまい、画面遷移できないのです。したいことは、半角英数文字以外がユーザーIDとパスワードに入力されたとき、「半角英数で入力してください」という判定をしたいのです。画面遷移後のスクリプトは文字制限の都合で記載できませんでした。 ユーザー名<br> <form method = "post" action = "subject02-01.php" > <input type = "text" name = "USERNAME"><br> パスワード<br> <input type = "password" name = "PASS"> <input type = "submit" name = "submit" value = "ログイン"> <?php $str = mb_convert_kana($str,"rna") if($_POST["submit"] == "ログイン") if($_POST["USERNAME"] == "root" && $_POST["PASS"] == "admin") { echo "認証に成功しました。"; } else if( $UserName == "" || $Password == "") else if(ereg("[A-Za-z0-9\-]",$str)) else { echo "認証に失敗しました。"; }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
エラーになる原因は、 if(ereg("[A-Za-z0-9\-]",$str)) else { echo "認証に失敗しました。"; } のように、 if の部分の実行文がないことでエラーになっているんじゃないかと思います。 特に実行する必要がない場合には ; だけの行を入力しておけばよいです。 また、A-Za-z0-9\- 以外の文字があるということを検知するには、 if(ereg("[^A-Za-z0-9\-]",$str)) echo "半角英数以外の文字があります。"; のようにすればいいんじゃないでしょうか(ちゃんとしたテストをしてないので自信なし)
その他の回答 (2)
- kaiwarepon
- ベストアンサー率49% (47/95)
追加です。 $str = mb_convert_kana($str,"rna")のあとにも;がない。 if($_POST["submit"] == "ログイン")のあとの{}もないし、 } else if( $UserName == "" || $Password == "")のあとの{}もない else if(ereg("[A-Za-z0-9\-]",$str)) のあとも{がない。 ある程度省略するにしても、どこが本当に間違っているのか、これではアドバイスのしようがありませんね。
お礼
わかりにくい質問と間違いだらけのスクリプトで申し訳ありませんでした。根本的な間違いに気づくことができ、なんとか半角英数の判定をすることができました。ありがとうございました。
- kaiwarepon
- ベストアンサー率49% (47/95)
$str はどこからやってきたのでしょう? あと、行末に?>は入っていますよね。
お礼
ありがとうございます。エラーにならず、「半角英数以外の文字があります。」と表示することができました。