检查是否已注册此类电子邮件地址的帐户(包括点等)

时间:2013-02-25 00:35:42

标签: php validation duplicates

我读了很多关于检查数据库中是否存储了相同电子邮件的问题。但是,当电子邮件提供商(例如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.comone.two@gmail.com不同,因为有一个点。有些电子邮件允许点对于相同的帐户,有些则不允许。我该怎么做?

类似解决方案

可以在此处找到类似问题的解决方案

How to check for a duplicate email address in PHP, considering Gmail (user.name+label@gmail.com)

1 个答案:

答案 0 :(得分:1)

您不应该对电子邮件地址中的点做任何特殊操作。只需执行SELECT查询搜索电子邮件地址,如果您返回1行或更多行,那么您就知道它是重复的。我怀疑你的问题可能与你构建查询的方式有关。尝试将电子邮件发送到mysqli_real_escape_string,然后再将其包含在查询中。如果这没有帮助,请发布代码的相关部分,以便我们更好地帮助排除故障。