我想验证电子邮件地址,以确保它们是大学的edu地址。最好的方法是什么?我有一个数据库中的大学列表,每个我都指定一个网址,该网址应该是该大学用户电子邮件地址的一部分。所以对于哈佛来说,网址是“harvard.edu”,因为所有哈佛电子邮件地址都将其作为主机名的一部分。
有没有人有PHP功能可以让我这样做?
答案 0 :(得分:1)
注意:这只会检查* .edu电子邮件地址
您可以简化它以检查edu电子邮件:
$email = "myemail@uni.edu";
function isEduEmail($email){
$email = explode(".",$email);
if($email[count($email)-1] == "edu")
return true;
else
return false;
}
var_dump(isEduEmail($email)); // echo bool(true)
我意识到其他人会使用正则表达式提供更好的解决方案,但我对此非常垃圾,所以 解决方案。
答案 1 :(得分:1)
我首先要检查电子邮件是否是有效的电子邮件
if(filter_var($email, FILTER_VALIDATE_EMAIL))
如果是,我会提取域名
$mailDomain = substr(strrchr($email, "@"), 1);
一旦提取,我会检查它是否存在于我的基础
中mysql_query("SELECT count(domain_name) from domain where domain_name = ".mysql_real_escape_string($mailDomain));
答案 2 :(得分:0)
检查字符串是否以.edu
<?php
$email = "myemail@uni.edu";
function isEduEmail($email){
$eLength = strlen($email) - 1;
$local = substr($email, $eLength - 3, $eLength );
if($local === '.edu') return true;
return false;
}
var_dump(isEduEmail($email)); // echo bool(true)
?>
答案 3 :(得分:0)
由于你在mysql中有数据,这样的示例查询应该可以正常工作
$some_email = ... ; // don't forget to sanitize
$sql = <<<SQL
select count(*) from tables
where domain_name = substring_index('{$some_email}', '@', -1);
SQL;
... // processing
// return >=1 is a valid edu email
答案 4 :(得分:0)
单衬:
function isEduEmail($sEmail) {
return (substr($sEmail, strrpos($sEmail, ".")+1) == "edu");
}
答案 5 :(得分:0)
如果您有域名列表,只需检查指定的电子邮件地址是否以“@ whitelisted.domain”结尾。您可以使用filter_var()
验证它是否是正确的电子邮件地址,然后strpos()
检查它是否包含正确的域名。
示例:
$domains = array('test.org', 'fake.com');
$email = 'test@fake.com';
$email = filter_var($email, FILTER_VALIDATE_EMAIL);
$email_ok = false;
foreach ($domains as $d) {
if (strpos($email, '@' . $d) !== false) {
$email_ok = true;
break;
}
}
// $email_ok is true if email's domain is on our whitelist
var_dump($email, $email_ok);
如果您想通过查询MySQL服务器进行验证,请在@
之后提取部分电子邮件,并检查它是否在您的列表中。
答案 6 :(得分:0)
这样的事情(希望你明白了)
我不确定这是否是有效的代码,因为没有测试编写:
<?php
$usersEmail1 = "i.am@harvard.edu";
$email1Exploded = explode("@", $usersEmail1);
if (sizeof($email1Exploded) == 2) {
$domain1 = trim($email1Exploded[1]);
$result = mysql_query("SELECT * from valid_domains WHERE url LIKE '%" . mysql_real_escape_string($domain1) . "' LIMIT 1");
if (!empty(mysql_num_rows($result))) {
//Valid email
} else {
//Invalid email
}
} else {
//not valid email
}
?>
答案 7 :(得分:0)
$email="bob@harvard.edu";
$lthree=substr($email,-3);
$edu=false;
if ($lthree=="edu") $edu=true;
现在,如果$ edu为真,那么该电子邮件就是一封edu电子邮件。