我有以下功能来检查电子邮件是否有效:
function validate_email ($getemail, $type)
{
$email = $getemail;
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
$chkdomain = explode("@", $email);
$domain = $chkdomain[1];
switch ($type) :
case 1: //FOR USERS
if ($domain == "oxfordmontessori.com" || $domain == "student.com" || $domain == "vendor.com")
return 'Not Valid';
else
return TRUE;
endswitch
;
} else {
return FALSE;
}
}
我以这种方式调用函数。
var_dump($email);
$response = validate_email($email, '1');
var_dump($response);
if ($response == FALSE) {
$error = "Incorrect Email-Id";
} elseif ($response == 'Not Valid') {
$error = "Email domain is not valid for user.";
}
var_dump($response);
代码有以下问题
功能是对sunrise@o.com
和'sunrise@o.c'这样的电子邮件验证没有多大限制,两者都被认为是有效的电子邮件ID。
如果函数返回TRUE,我也会收到“电子邮件域对用户无效。”
还有一个问题是返回TRUE时它会给我一个错误Email domain is not valid for user.
答案 0 :(得分:1)
它不起作用,因为如果域名设置为oxfordmontessori.com
student.com
或vendor.com
,则返回“无效”,因此@a.com
和@b.com
将返回true。除非您的系统旨在阻止人们使用这些特定域名。
您可能应该有一个外部变量来存储错误,或者在参数中有一个指针,而不是从函数中返回多个数据类型。可以是true或false,也可以是整数,但不是true,false和string的混合。我认为字符串(当针对布尔运算符进行检查时)每次都返回true。
答案 1 :(得分:-4)
您也可以使用html5 email inputs进行验证。 验证主要通过像
这样的正则表达式函数来完成preg_match()
Here is an example of using regular expressions for validating email addresses