大学edu电子邮件地址验证与PHP

时间:2011-08-24 14:49:58

标签: php validation email

我想验证电子邮件地址,以确保它们是大学的edu地址。最好的方法是什么?我有一个数据库中的大学列表,每个我都指定一个网址,该网址应该是该大学用户电子邮件地址的一部分。所以对于哈佛来说,网址是“harvard.edu”,因为所有哈佛电子邮件地址都将其作为主机名的一部分。

有没有人有PHP功能可以让我这样做?

8 个答案:

答案 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)

?>

DEMO:http://codepad.org/97LlxPX1

答案 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电子邮件。