【发布时间】:2011-12-09 11:05:00
【问题描述】:
当我们将他(或她)添加到我们的系统时,我用来验证用户电子邮件地址的功能:
private function validate_email($email){
list($userName, $mailDomain) = split("@", $email);
if (!checkdnsrr($mailDomain, "MX")) { //.edu does not work?
return false;
}
return true;
}
由于某种原因,当我输入 我知道有效的 .edu 地址时,此函数总是似乎返回 false。
如何修复该函数,以便它验证并返回所有电子邮件类型的 true?
【问题讨论】:
-
我的 2 美分:完全摆脱验证。检查它是否符合
*@*并将其他所有内容扔出窗外。无论如何它都没有用 - 如果您需要确定某个特定的电子邮件地址存在,您仍然需要发送一个确认链接。 -
@Pekka -- 我们发送了一个确认链接,但我们不知道他们是否收到了它,如果我们假设地址始终有效,我们无法知道他们是否收到了确认...
-
获得确认仍然是真正的唯一方法。即使地址是有效,由于过度的垃圾邮件过滤器,电子邮件也可能丢失。我认为:
*@*之外的任何验证基本上都是毫无意义的。看看即将出现的新.xyzTLD...IDN...最终,IDN TLD... -
@Pekka 基本上这是一个求职者系统,他们可以登录并获得考试供他们参加。如果我们不知道他们没有收到电子邮件,我们假设他们收到了并且他们没有通过测试——我不希望这种情况发生。
-
checkdnsrr 只使用系统解析器。您可以通过在命令行中执行
nslookup -type=mx mit.edu或host -t mx mit.edu来检查自己的 dns 设置是否正常。
标签: php email validation