我想驗證電子郵件地址,以確保他們是大學edu地址。什麼是最好的方式來做到這一點?我有一個數據庫中的學院列表,併爲每一個我指定一個網址,應該是該學院的用戶的電子郵件地址的一部分。所以哈佛大學的網址是「harvard.edu」,因爲所有的哈佛電子郵件地址都將其作爲主機名的一部分。大學教育電子郵件地址驗證與PHP
有沒有人有一個PHP函數,將允許我這樣做?
我想驗證電子郵件地址,以確保他們是大學edu地址。什麼是最好的方式來做到這一點?我有一個數據庫中的學院列表,併爲每一個我指定一個網址,應該是該學院的用戶的電子郵件地址的一部分。所以哈佛大學的網址是「harvard.edu」,因爲所有的哈佛電子郵件地址都將其作爲主機名的一部分。大學教育電子郵件地址驗證與PHP
有沒有人有一個PHP函數,將允許我這樣做?
我會首先檢查電子郵件是一個有效的電子郵件
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));
注:這隻會檢查* .edu的電子郵件地址
您可以簡化它只是檢查EDU電子郵件:
$email = "[email protected]";
function isEduEmail($email){
$email = explode(".",$email);
if($email[count($email)-1] == "edu")
return true;
else
return false;
}
var_dump(isEduEmail($email)); // echo bool(true)
我知道別人會有使用正則表達式更好的解決方案,但我很垃圾,所以這一個解決方案。
檢查是否在字符串中結束.edu
<?php
$email = "[email protected]";
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)
?>
既然你已經在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
單內襯之一:
function isEduEmail($sEmail) {
return (substr($sEmail, strrpos($sEmail, ".")+1) == "edu");
}
讓我們說在電子郵件中有一個'.'像'my.name @ something.edu' – Neal
它使用strrpos,它檢查最後一個點。最後一個點應該總是.edu。如果不是 - 該函數將返回false。因此應該如此工作。 –
如果您有域名列表,請檢查給定的電子郵件地址是否以「@ whitelisted.domain」結尾。您可以使用filter_var()
來驗證它是否是正確的電子郵件地址,然後使用strpos()
來檢查它是否包含正確的域。
例子:
$domains = array('test.org', 'fake.com');
$email = '[email protected]';
$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服務器做驗證,@
後提取電子郵件的一部分,並檢查它是否是你的名單上。
像這樣的東西(希望你的想法)
我不知道這是否是有效的代碼,因爲沒有測試寫道:
<?php
$usersEmail1 = "[email protected]";
$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
}
?>
$email="[email protected]";
$lthree=substr($email,-3);
$edu=false;
if ($lthree=="edu") $edu=true;
現在,如果$ EDU是真實的,那麼該電子郵件是edu的電子郵件。
你的意思是域名? – SLaks
可能的重複:[如何在PHP中驗證電子郵件?](http://stackoverflow.com/questions/5855811/how-to-validate-an-email-in-php) – hakre