読者です 読者をやめる 読者になる 読者になる

肉とビールとパンケーキ by @sotarok

少し大人になった「肉とご飯と甘いもの」

Emailと電話番号のバリデーション(またまた正規表現のお話)

PHP

せっかくトラバいただいたのでご返信ということで.

バリデートの場合、Emailは、

if(preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9_\.\-]+$/", $_POST['email']){
   $email = $_POST['email'];
}else{
   エラー処理;
}

電話番号は、

if (preg_match("/^[0-9]+$/", $_POST['tel'])) {
    $tel = $_POST['tel'];
}else{
    エラー処理;
}
PHP | サニタイズかバリデートかという話 - エセプログラマーの戯言 - Yahoo!ブログ

Emailと電話番号のバリデーションですが,こりゃまずい,ということで...

例えば,

$_POST['email'] = 'a@b';
$_POST['tel'] = '1';

こんなのまで通っちゃいます.すると,こういうこととかこういうこととかになっちゃいます*1

Emailのバリデーションに関してはshomaさんのブログでこのあたりの実装をまとめてくださっているので参考にすると良いかもです.
ちなみに私は最近はEthnaを使っているときはEthnaのカスタムチェック,じゃなければPEAR::Mail_RFC822をつかっちゃっています.

そういや電話番号は…?「-」ナシなら

preg_match('/^0[0-9]{9,10}$/', $tel);

こんなんでおk?電話番号って他に考慮しないといけないものありましたっけ…とか思ってたら,ちょっと…!w→二度目の公開!電話番号の正規表現 - にぽたん研究所


と,いうことでした.ちなみに正規表現は苦手です…>第29回勉強会




(修正)なんかタイトルちょっと変えた.(「お話」が2回もはいってたからw)

*1:と,言うのは冗談…でもなくて,やっぱりちゃんとやっておくべき部分ですね.「簡単にチェックできればいいや」という考えが穴を招く,ということで:)