ええと、それは壊れています:
私は完全に機能する正規表現を持っていて、すべての数字、文字、および電子メール関連の句読点(._- @)のみを使用して電子メールフィールドをサニタイズできました。次に、適切な電子メール正規表現を追加して、正しいかどうかを確認するとよいと思いました。パターン。これは私が今持っているものです:
function check_chars_email($str) {
$str_replace = preg_replace("/[^a-zA-Z0-9-@_\.]/","",$str);
if(preg_match("/^(.*)@(.*)\.(.*)$/", $str_replace)) {
return $str_replace;
} else {
return FALSE;
}
。*の周りに角かっこは必要ないことは承知していますが、かっこを使用すると読みやすくなります。
その関数を呼び出すと、次のようになります。
$esc_email = mysqli_real_escape_string($mysqli, check_chars_email($_POST["email"]));
$tr_email = trim($esc_email);
$_SESSION["email"] = $tr_email;
次に、これを使用して、登録スクリプトの開始時に確認します。
($ tr_email === FALSE)
そして、有効な電子メールアドレスで試してみても失敗します。変数が空かどうかもテストしているので、===の代わりに== FALSEを試すことができると思いますが、できるだけ正確にしたいと思います。
誰か考えがありますか?