【问题标题】:Avoid multiple accounts with same email避免使用同一电子邮件的多个帐户
【发布时间】:2018-06-23 02:46:26
【问题描述】:

我正在开发一个网站,根据使用邀请链接(推荐)注册的用户数量,用户可以获得奖品。

Gmail 允许其用户使用一封电子邮件的多种变体。有三种主要方法可以增加您可以从单个 Gmail 帐户获得的可用 Google 电子邮件地址的数量:

  1. 使用 @googlemail.com 域。
  2. 在您的电子邮件名称中使用 “点” 或句点。
  3. 在您的姓名末尾使用加号 “+” 并添加额外字符。

所以:

  • myname@gmail.com
  • myname@googlemail.com
  • my.name@gmail.com
  • my.name@googlemail.com
  • my.na.me@gmail.com
  • my.na.me@googlemail.com
  • 我的名字+abcde@gmail.com
  • 我的名字+123abc@gmail.com
  • my.name+abcdefg78@gmail.com
  • my.name+abcdefg78@googlemail.com

都是一样的。

我不希望用户使用一封电子邮件创建多个帐户来获得奖品。我怎样才能避免这种情况?

谢谢。

【问题讨论】:

  • 根据你对googles允许地址的了解,自己解析每个用户名,只算1?
  • 在我看来,您可以将“.”替换为“”,以及右边的所有内容,包括“+”。然后搜索具有该名称的现有用户。今晚晚些时候我可以在 TSql 中发布一个示例,如果到那时你还没有得到答案。

标签: email gmail


【解决方案1】:

我的方法是 - 将已注册的电子邮件存储在数据库表中。在注册期间有一个验证步骤,检查该表中的现有电子邮件地址。如果用户提交的电子邮件存在于表格中,验证失败并向用户显示他们已经注册的消息。

为了避免人们玩弄系统,请使用正则表达式去除无关字符,然后再将其存储到您的数据库表中。

一个简单的正则表达式实现可能看起来像(\.|\+[A-z0-9_-]+|oogle)(对于.NET)。这将删除所有句点、加号后的字符,并修复 gmail / googlemail 问题。

虽然它并不完美(例如,它会搞砸boogle@gmail.com),但您可以根据自己的需要和实际的后端语言对其进行调整。

【讨论】:

猜你喜欢
  • 2022-11-25
  • 1970-01-01
  • 1970-01-01
  • 2014-08-06
  • 2012-09-05
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多