0

我阅读了很多关于检查数据库中是否存储有相同电子邮件的问题。然而,这些解决方案都没有考虑到电子邮件提供商(例如谷歌)允许用户在其帐户名中包含点的情况。例如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 回答