出于安全原因,我希望我网站上的用户无法注册类似于其电子邮件地址的用户名。电子邮件地址为user@domain.com的人无法注册为用户或我们等等
例如,我希望这不可能:
测试仪 - > tester@mydomain.com(错误) tes.ter - > tester@mydomain.com(错误) 等
但我确实希望能够使用以下内容:
tester6 - > tester@mydomain.com(好) 等
//编辑 tester6也是错误的。我用户6 - > tester@mydomain.com(好)。
有没有人知道如何实现这一点,或者尽可能接近的事情。我在javascript中检查这个,然后在php中的服务器上。
侨!
PS。也许有一些jquery插件可以做到这一点,到目前为止我找不到这个。使用插件的缺点是,我必须在php中实现相同的功能。如果它是一个很长的插件,翻译需要一些时间。
//再次编辑 如果我只检查@之前的部分,他们仍然可以使用userhotmailcom或usergmail等。如果他们提供电子邮件是明显的。
答案 0 :(得分:9)
通常,我使用Levenshtein distance算法来检查密码是否像登录一样。
PHP有a native levenshtein function和here is one written in JavaScript。
答案 1 :(得分:3)
这样的东西?
var charsRe = /[.+]/g; // Add your characters here
if (username.replace(charsRe, '') == email.split('@')[0].replace(charsRe, ''))
doError();
答案 2 :(得分:0)
如果你想要的只是允许用户名不同于电子邮件地址而只有句点(.
),你可以从用户名中删除句点并将其与电子邮件地址进行比较。
//I don't know php - translating this pseudo code won't be hard
$email = "someone@something.com"
$emailname = $email.substring(0, $email.indexOf('@'));
$uname = "som.e.on.e";
$uname = $uname.replace(/\./g, "");//regex matching a '.' globally
if($uname === $emailname)
showInvalidNameErrorMessage();
修改正则表达式以防止连字符和下划线/[\-._]/g
答案 3 :(得分:0)
好吧,我是一名新手PHP开发人员。但我心中的答案是,如果你只允许他们只注册他们的电子邮件地址(不会与他人共享),然后单独询问他们的名字和姓氏,那不是很好吗?只在公共内容中显示他们的名字(即博客等)。我不是编程方面的专家,如果我错了,请纠正我,但我仍然无法理解你的安全性。对不起英语不好,我不是母语为英语的人。