• ベストアンサー

半角英数判定

こんにちわ。最近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 "認証に失敗しました。"; }

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

エラーになる原因は、 if(ereg("[A-Za-z0-9\-]",$str)) else { echo "認証に失敗しました。"; } のように、 if の部分の実行文がないことでエラーになっているんじゃないかと思います。 特に実行する必要がない場合には ; だけの行を入力しておけばよいです。 また、A-Za-z0-9\- 以外の文字があるということを検知するには、 if(ereg("[^A-Za-z0-9\-]",$str)) echo "半角英数以外の文字があります。"; のようにすればいいんじゃないでしょうか(ちゃんとしたテストをしてないので自信なし)

msnxl
質問者

お礼

ありがとうございます。エラーにならず、「半角英数以外の文字があります。」と表示することができました。

その他の回答 (2)

回答No.3

追加です。 $str = mb_convert_kana($str,"rna")のあとにも;がない。 if($_POST["submit"] == "ログイン")のあとの{}もないし、 } else if( $UserName == "" || $Password == "")のあとの{}もない else if(ereg("[A-Za-z0-9\-]",$str)) のあとも{がない。 ある程度省略するにしても、どこが本当に間違っているのか、これではアドバイスのしようがありませんね。

msnxl
質問者

お礼

わかりにくい質問と間違いだらけのスクリプトで申し訳ありませんでした。根本的な間違いに気づくことができ、なんとか半角英数の判定をすることができました。ありがとうございました。

回答No.2

$str はどこからやってきたのでしょう? あと、行末に?>は入っていますよね。

関連するQ&A

専門家に質問してみよう