ICannが非ラテン文字のドメイン名を許可しているので、電子メールの検証について心配する必要がありますか?現在、私のサイトではphp関数を使用して、電子メールアドレスの各セグメントに英数字が設定されていることを確認しています。キリル文字、アラビア語、中国語など、これらの他の文字セットは検証に合格しますか?これに利用するために推奨されるphp関数はありますか?
3 に答える
最終的に最善の方法は、適切なIDN関数を使用して、着信文字列をACE文字列に変換することだと思います(xn--xyz-blah.com
)。そのプロセスが機能する場合、ドメイン名は有効です。そうでない場合は、そうではありません。
これを行うという名前のPHP関数がありますが、idn_to_ascii()
追加のライブラリが必要です。システムで使用できるかどうかを確認する必要があります。
idn
IDN変換を行うという名前の外部Linuxコマンドもあるようです。しかし、それについてはこれ以上何も知りません。
PHPの組み込みメソッドのみを使用する場合、delfuegoはこの質問で非常に見栄えのする正規表現を提供します。
フィルターと併用filter_var()
することをお勧めします。FILTER_VALIDATE_EMAIL
しかし、Google で検索したところ、まだマルチバイト文字をサポートしていないことがわかりました。今のところ、ラテン文字以外の文字を取り除き、それに対して通常の検証を実行するのが最善の策のようです(ただし、ラテン文字以外の文字を削除してドメインを変更し、それらを別の文字に置き換えたため、checkdnsrrは明らかに失敗します)。ラテン語に相当するため、それを使用してメールのドメインの MX レコードを確認する場合は、一時的に無効にする必要があります)。
ICANN が非ラテン語の電子メール アドレスを許可するのではなく、IETF 標準化団体とその「EAI」ワーキング グループからの新しい規範の到来です。
つまり、はい、技術的には、今日café@café.été
は有効な電子メール アドレスです。非 ASCII の左部分、非 ASCII ドメイン、非 ASCII TLD です。
しかし、多くの既存の、または新しいコードでさえ、それらのケースを受け入れることができません。もちろん、これはニワトリが先か卵が先かの問題です。なぜなら、それを使用したいと思っている人々が、多くのサイトで拒否されているのを見て、ASCII に戻るからです。
「ユニバーサル アクセプタンス」と呼ばれるすべての ICANN イニシアチブがあり、IDN だけでなく新しい gTLD にも関係しています。 TLD などのばかげた正規表現は 2 文字または 3 文字の長さにする必要がありますが、これは誤りです。
https://uasg.tech/で見つけることができます。
これは、開発者をはじめ、さまざまな種類の一般向けのアドバイスとリンクであり、したがって、すべきこと/すべきでないことのリストです。
彼らは最近、Alexa に基づいてアクセス数が最も多いサイトと、それらが許可する、または許可しないメール アドレスの種類に関する 3 年間の傾向を示す新しい記事を公開しました。 all-domain-names-in-open-source-software/
https://uasg.tech/wp-content/uploads/documents/UASG033-en-digital.pdfのレポートでは、Java および Python ライブラリとそれらの IDN の処理について詳しく説明しています。