私はPHP経由でメールを送信するためのフォームを持っています。 メールが届かないと言ったユーザーがいました。私は、電子メールアドレスではなく、電子メールアドレスのフィールドに名前が保存されているように見えました。PHPはOutlookからコピーしたメールアドレス文字列を切り捨てます
電子メールが[text] @ [text] - [text] - 電子メールアドレスを検証する一般的なプラクティスを持つ場合にのみ、送信することを許可するregex経由でクライアント側の検証を追加しました。
使用正規表現:
var regex = /\[email protected]\S+\.\S+/;
は何を思いますか?問題はまだ発生します:ユーザーは電子メールを送信できますが、アドレスは検証をパスしますが、名前を保存するだけです!
どのようにですか?
Mustermann, Max <[email protected]>
正規表現の検証は言う:それは有効なメールアドレスです
ユーザーは、次の形式で提供されますOutlookからメールアドレスをコピーしていました。
私は正規表現を変更しなければならないと考えましたが、これを許さないようにしました。しかし、私の同僚の一人は、これは電子メールのアドレスのための有効なフォーマットだと言います。
そこで私はPHPが実際にその文字列で何をしたのか調べ始めました。そして、ここでそれは奇妙次のようになります。
$email = "Mustermann, Max <[email protected]>";
var_dump($email);
// prints out:
// string(42) "Mustermann, Max "
文字列が<
で停止し、その長さは、まさにここに何が起こるまだ42ですか?
編集:物語の
終了:
/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-][email protected][a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/
感謝を...多くのことを説明しています。私たちのCMSのバックエンドもHTMLベースです。だから私はそれが実際に名前を保存しただけだと思った。 – Danmoreng