JavaScriptからPOSTで送信されたデータをPHPで受け取り、IDやパスワードとして使えるかをチェックする際に間違えたところをメモ。
mb_ereg_match()を使ってしまった
全角文字が送られてきても大丈夫なようにと考えてマルチバイトの正規表現mb_ereg_match()を使ったが、文字エンコードの問題でうまく動作しなかった。
マルチバイトはNGになるので、preg_match()にして解決した。
正規表現の記載ミス
半角の記号、英字、数字を表す正規表現は以下の通り。
if (!preg_match("/^[!-~]+$/",$word)) { echo "半角の記号、英字、数字以外が使われている。"; }
最後の「/」を書き忘れている単純ミスがあった。
メールアドレスチェックの失敗
以下で、チェックが出来る。
if (filter_var($word , FILTER_VALIDATE_EMAIL)) { echo "正しいメールアドレス"; }
上記は問題なく、単純にJavaScriptで指定していたinputのnameの指定が誤っていた。
filter_var()によるチェックの問題点
docomoの携帯アドレスなどで、filter_var()だとNGになるアドレスが取得できたらしい。実用性を考えると、正規表現でチェックした方がいいとのこと。
以上。