寻找一个 PHP 正则表达式或函数来使用 .为安全起见的电子邮件

Posted

技术标签:

【中文标题】寻找一个 PHP 正则表达式或函数来使用 .为安全起见的电子邮件【英文标题】:Looking for a PHP regex or function to filter variations using . of an email for security 【发布时间】:2012-12-12 04:27:47 【问题描述】:

我收到垃圾邮件是因为 gmail 允许在他们的电子邮件中使用 .,所以有人喜欢这个垃圾邮件发送者。

q.i.n.ghu.im.i.n.g.o.u.r@gmail.com 

可以通过在其命名结构中删除和/或添加另一个句点来完成。 这恰好是在 Joomla 安装上,所以我特别希望创建一个组件,以便我可以添加到多个站点,或者如果有一个简单的正则表达式来添加内联现有代码。另外,有什么正在做的事情吗,因为这似乎与新命名的松散类型的电子邮件地址类似。这对我来说太疯狂了。

【问题讨论】:

I've got same problem,我直接用SQL删除了数据库中的用户,不过可以作为一个起点。 【参考方案1】:

你可以做一些简单的事情,比如:/^(?:[^@]+\.)5,[^@]+@(?:[^@]+\.)+[^@]+/

这只是快速折腾,并非用于验证,而是告诉您他们的电子邮件是否有问题的指针。这里的关键是 5, 量词,表示如果电子邮件有 5 个或更多点(如 a.b.c.d.e.f),它将匹配。换句话说,被标记为 setchy。

我希望这会有所帮助!

解释:http://regex101.com/r/lB5vG3

【讨论】:

@Lundrian 我也会看看这个解决方案,可能会减少至少这个人/机器人可以为一个帐户输入的组合。我从未看过或想过人们在电子邮件中合法使用句点的频率,因此可能会阻止有效用户。可能必须创建用户通知规则,以便他们知道是否拒绝访问。 我必须建议不要像这样完全拒绝完全有效的电子邮件地址。我有很多商家网站出于同样的原因拒绝了我的 TMDA 编码地址 - 这很烦人,经常导致大量浪费时间的调试,并且总是导致他们失去我的业务。 @AlexHowansky 谢谢,这回答了我关于这样做的潜在缺点的问题。【参考方案2】:

如果您的目标是将此地址与其他与其等效的地址进行匹配(因为您已经将它们列入黑名单),那么我只需在存储地址之前将地址标准化为最基本的状态。将其小写,在@处拆分,如果右侧是“gmail.com”,则从左侧删除所有点并将两半重新组合在一起。

    从 JOE.SCHMOE@GMAIL.COM 开始 小写为 joe.schmoe@gmail.com 拆分为 joe.schmoe 和 gmail.com 因为右边是gmail.com,所以去掉左边的点 重新组装到 joeschmoe@gmail.com

现在你已经有了可以阻止/禁止/随便什么的基地址。

【讨论】:

这听起来相当不错,唯一的问题是小写和/或大写是一个经常争论的问题,尽管据我所知,大多数帐户似乎不再区分大小写了。 Gmail 太好了,我希望我知道他们为什么允许这样做,这样我就不必为他们编写特定的代码了。 Safari 和 IE 已经让我编写了很多额外的代码。

以上是关于寻找一个 PHP 正则表达式或函数来使用 .为安全起见的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

用于转义 MySQL 正则表达式语法的 PHP 函数

可以在 PL/SQL 函数中使用正则表达式吗?

php 正则表达式匹配类似于字母。又名 u=ü 或 ê=é=è=e

PHP:正则表达式替换,同时忽略html标签之间的内容

使用 PHP 将 URLS 中的空格替换为 %20

PHP正则表达式的使用技巧