【发布时间】:2013-08-12 19:47:04
【问题描述】:
如您所知,可以在电子邮件地址中使用很多字符。 现在人们在他们的电子邮件地址中拆分一些关键字以提高可读性,例如:
name.surname@gmail.com
x-com.shop.support@stuff.net
但是,点字符. 在使用 Gmail 时(以及大写)只会提高可读性,它不被视为电子邮件地址的一部分。因此,我们可以说:
name.surname@gmail.com 与namesurname@gmail.com 相同
x-com.shop.support@stuff.net 与x-comshopsupport@stuff.net 相同
问题
大多数网站都使用数据库驱动的身份验证。假设我注册了一封电子邮件(不带点)namesurname@gmail.com,那么由于字符串不同,这样的 MySQL 查询将不起作用:
SELECT * FROM users WHERE email = "name.surname@gmail.com" ;
问题
有什么办法可以解决这类问题吗?事实上,不同的电子邮件服务器使用不同的规则。那么用户是否必须始终记住,他们在哪个网站上使用了点或大写字母,即使那个电子邮件地址仍然相同?
更新
想象一下某个服务,您可以使用同一个电子邮件创建大量帐户。
原始邮箱是namesurname@gmail.com,别名:
name.surname@gmail.com
n.amesur.name@gmail.com
nam.esurname@gmail.com
您仍然会在同一地址收到电子邮件确认。听起来很奇怪吧?
【问题讨论】:
-
foo.bar与foobar是否被视为同一个地址完全取决于接收服务器,没有这样的通用规范。 -
大写字母没有问题 - 您可以插入小写形式并检查它。至于点,它是 Gmail 的功能,但其他邮件提供商可能会将它们视为两封独立的电子邮件。
-
好吧,这个信息很有用
-
"未考虑大写 [..]" 这是一个常见的误解:域名(@右侧)不考虑区分大小写。但 local parts(@ 左侧) 区分大小写。除了特殊情况
postmaster。大多数 MTA 配置为忽略“本地部分”的区分大小写。但这绝对不是必需的。事实上,RFC5321 明确指出“邮箱的本地部分必须区分大小写。” -
@SylvainLeroux 很棒的信息,它可能是答案
标签: php mysql email authentication