クライアントから送信された

フォームデータの検証

 

 

  〜メールアドレス($_POST["email"])〜

 

 

  • 基本的にこれでOK(既存のフィルターを使用する)

  filter_var($_POST["email"],  FILTER_VALIDATE_EMAIL);

   ※filter_var()は2009-3月以前に作成されたauやdocomoのアドレスは一部、RFC違反のためはじかれる。

 

 

 

 

  • 文字列が正規表現にマッチするか(作成したフォーマットを使用する)

 

  preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0- 9\._-]+)+$/", $_POST["email"]);​​​​​​​

 

    ”^”          行頭から,

    ”([a-zA-Z0-9])+”    a~z A~Z 0~9の中から1文字以上連続しその後

    ”([a-zA-Z0-9\._-])*”        a~z A~Z 0~9 . _ - の中から0文字以上連続し

    ”@”                            @を挟んで、a~z A~Z 0~9が1文字以上連続する。

    "$"                              行末は、

                                   a~z A~Z 0~9 . _ - の中から1文字以上連続した文字列である。

 

 

※RFC5322で定義されたメアドを完全に定義するのは難しい。上記のフォーマット以外にも様々な表現方法はあるが独自で作成したフォーマットの使用は現実的では無い。最新の有力なソースを検索、参照してください。

尚、文字コードがUTF-8以外の場合は、mb_ereg()を使用。

 

 

 

  〜パスワード($_POST["password"])〜

 
  • 文字列が正規表現にマッチするか

 

preg_match("/\A(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)[a-zA-Z\d]{8,100}+\z/", $_POST["email"]);​​​​​​​
                    "?=.*?[a-z]"               a~zの中から0文字以上含む文字列
                    "?=.*?[A-Z]"              A~Zの中から0文字以上含む文字列
                    "?=.*?\d"                   0~9の中から0文字以上含む数字列 が
                    "{8,100}+"                8文字以上100文字未満連続する文字列


※正規表現の理解を深めるため、書き方をメールアドレスと変えている。