0

データベースに同じメールが保存されているかどうかを確認するための質問をたくさん読みました。ただし、これらのソリューションはいずれも、Googleなどの電子メールプロバイダーがユーザーにアカウント名にドットを含めることを許可している状況を考慮していません。たとえば、username@gmail.comに等しいuser.name@gmail.com

ドットをはがしてこのようにチェックできると思いますが、いいアイデアですか?

しかし、ここで考慮する必要があることは他にもあると思います。

ドットやその他の追加要素を考慮して、データベースに特定の電子メールがすでにあるかどうかを確認するのを手伝ってください。

更新 これは、すでにメールアドレスがあるかどうかを確認する方法です。

public function isemail($email)
{
    $qw = $this->registry->dbi->prepare("SELECT `email` FROM `".PRE."membership` WHERE `email`=?;")->execute($email)->results();
    if (empty($qw)) return false;
    return true;
}

問題は、たとえばドットがあるためonetwo@gmail.comとは異なることです。one.two@gmail.com一部の電子メールでは、ドットを同じアカウントに使用できますが、許可しないものもあります。私はどのように振る舞うべきですか?

同様のソリューション

同様の質問に対する解決策はここにあります

Gmail(user.name+label@gmail.com)を考慮して、PHPで重複するメールアドレスを確認する方法

4

1 に答える 1

1

メールアドレスのドットについて特別なことをする必要はありません。電子メールアドレスを検索するSELECTクエリを実行するだけで、1つ以上の行が返される場合は、それが重複していることがわかります。あなたの問題は、クエリの作成方法に関係しているのではないかと思います。mysqli_real_escape_stringクエリに含める前に、にメールを渡してみてください。それでも問題が解決しない場合は、コードの関連部分を投稿して、トラブルシューティングに役立ててください。

于 2013-02-25T00:40:31.730 に答える