dポイントプレゼントキャンペーン実施中!

phpでメールアドレス入力のファームを作成しようと思います。

aaaaa@aaaaa.ne.jp

とか入ってくるとして、
どのような入力チェックが必要ですか?
最終的には送らないと分からないとしても、mail()関数が受け付けない文字列ぐらいは事前にはじきたいです。

「この関数で一発だよ」みたいなのがあるとか、
地道にこれとこれをチェックするのが一般的とか、

あと、
「info@日本語ドメイン.jp」みたいにメールアドレスに日本語ドメインってありえるのでしょうか?

どなたかご教授下さい。

A 回答 (2件)

if( preg_match( "/^[-_\.a-zA-Z0-9]+\@[-_a-zA-Z0-9]+\.[-_\.a-zA-Z0-9]+$/", $mailaddress ] ) == false ) {


 だめ
}

私は基本的にこういうチェックを行ってます

この回答への補足

具体的なコマンド助かります。
あとは、
日本語ドメインのメールアドレスってあるの?
ってところだけ気になってます。
どうなのでしょうか?

補足日時:2006/04/26 16:57
    • good
    • 0

getmxrr()やgethostbyname()を併用すれば


若干は精度をあげることができます。

function checkMail($num) {
if (preg_match("/[^-._~@\w]+/", $num)) return false;
$hostname = substr($num, strpos($num, "@")+1);
$mxcheck = getmxrr($hostname, $mxhosts);
$hostcheck = ($hostname != gethostbyname($hostname));
if (!$mxcheck and !$hostcheck) return false;
return true;
}

マルチバイトドメインのメールはないとは
いいきれませんが、迷惑なのでチェックで
はじいてしまってかまわないと思います。

この回答への補足

ありがとうございます。
マルチバイトドメインは除外派が多いようですね。

補足日時:2006/04/28 09:53
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!