我試圖編寫一個註冊表單,用於驗證用於註冊的電子郵件。特定領域的電子郵件驗證
簡而言之,我想確保用於註冊的電子郵件ID是公司域,而不是像Gmail或雅虎。
我有以下代碼來檢查一個電子郵件是否是給定域的一部分,我如何修改這個來檢查它是否在給定的域名列表中? (例如:gmail.com,yahoo.com,hotmail.com等)。
return (bool) preg_match('/^([a-z0-9\+\_\-\.]+)@([a-z0-9\+\_\-\.]{2,})(\.[a-z]{2,4})$/i', $domain);
林認爲它應該是沿着這些線路,但不能完全肯定:
function validate($email)
{
$error = 0;
$domains = array('gmail.com','yahoo.com','hotmail.com');
foreach($domains as $key=>$value)
{
if(preg_match('/^([a-z0-9\+\_\-\.]+)@([a-z0-9\+\_\-\.]{2,})(\.[a-z]{2,4})$/i', $value)
{
$error=1;
}
}
if($error==0)
return true;
else
return false;
編輯:我想在這裏給出的所有答案,形式仍然提交沒有問題,不管是什麼領域我使用! (即使是一個非電子郵件似乎工作!)
這是我如何調用該函數 -
if(isset($_POST['clients_register']))
{
//Must contain only letters and numbers
if(!preg_match('/^[a-zA-Z0-9]$/', $_POST['name']))
{
$error[]='The username does not match the requirements';
}
//Password validation: must contain at least 1 letter and number. Allows characters [email protected]#$% and be 8-15 characters
if(!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[[email protected]#$%]{8,15}$/', $_POST['password']))
{
$error[]='The password does not match the requirements';
}
//Email validation
if (validateEmail($_POST['email'])==false)
{
$error[]='Invalid E-mail';
}
//Output error in array as each line
if (count($error) > 0)
{
foreach ($error as $output) {
echo "{$output} <br>";
}
} else {
//Syntax for SQL Insert into table and Redirect user to confirmation page
}
}
問題是,無論我做什麼,用戶被重定向到確認頁面(即使名稱由數字和電子郵件形成,如「table」
'$ email_parts = split('@',$ email); if(in_array($ email_parts [1],$ domains)............' – DevlshOne
添加「googlemail.com」,它的另一個域名gmail ... – MeNa
這些大郵件有什麼問題服務?使用不在你的名單上的域名並不能保證它屬於一個公司,並且公司也可能在他們的域名下使用谷歌郵件。我想知道你想從黑名單中得到什麼效果。 – Sven