2017年09月15日

メールアドレスの形式チェックは「filter_var関数」と「input type=”email”」のどちらが良いですか?

メールアドレスの形式チェックは「filter_var関数」と「input type=”email”」のどちらが良いですか?

なにそれ?
input type=”email”?

input type=”email”は、HTML5から導入された機能のため、
古いブラウザでは動作しない場合があります。


へえ、そうなんだ・・・
そんなinput typeがあったんだ・・・
全然知らんかったわ。今まで使ったことないし。

で、ちょっと調べてみたら、

HTML5のinput[type=email]は制限が厳しすぎて使えないという話
input type=”email” のバリデーションチェックを止めたい
などという記事等を発見した。
意外と問題ある感じ。

で、何が問題なのかと言うと、
メアドをスペース込みでコピペしたらアウトです。
エラー文言の問題:どんなエラーでも「メールアドレスが正しくありません」では何が正しいのかわからない
出展:http://blog.ryow.net/2012/05/11-130438.php

という問題があるらしい。

そう言えば、メールアドレスの入力欄で半角スペースが混じってると、今までハジいていたんじゃないかな・・・。
これと言って、trimとかやった覚えもないし。

で、試してみました。

<?php
$mail = 'example@example.com '; // 末尾に半角スペースアリ

if(filter_var($mail, FILTER_VALIDATE_EMAIL)){
echo '正しいメールアドレスです';
}else{
echo '正しくないメールアドレスです';
}


if(filter_var(trim($mail), FILTER_VALIDATE_EMAIL)){
echo '正しいメールアドレスです';
}else{
echo '正しくないメールアドレスです';
}

で、実行結果が以下。
正しくないメールアドレスです
正しいメールアドレスです

要するに、trimを挟めばいい。それだけ。

ところが、HTML5の方を試していないことに気付いた。

<form action="cgi-bin/abc.cgi" method="post">
<p><label>メールアドレス:<input type="email" name="email" size="30" maxlength="40"></label></p>
<p><input type="submit" value="送信する"></p>
</form>
出典:http://www.htmq.com/html5/input_type_email.shtml


図のようになる。
aa.png

メールアドレスの文字列は違うが、最後に半角スペースが入っている。
そして、エラーの文言の出方だが・・・

全然違和感ないんですけど?
けっこう使えそうな気がする。
フォームのそばに、「メールアドレスに半角スペースが含まれているとエラーになります」とか、書いとくだけで充分なんじゃないか?

皆さんはどう思いますか?

ここはご意見いただけると、うれしいです。
特に、「いや、やっぱり不親切だろ」という方。
不親切だと思われる理由を教えていただけると幸いです。
>> https://ssl.form-mailer.jp/fms/886c27f2107744

余談:PHPというカテゴリを新設しました。

タグ:PHP HTML5
posted by ユニブロ at 23:55 | 東京 ☀ | Comment(0) | PHP | このブログの読者になる | 更新情報をチェックする