php电子邮件地址验证不起作用?
嘿,伙计们, 我知道用PHP发送电子邮件有很多更好的方法。然而,为此目的,最简单的解决方案是完美的。唯一的问题是:我不知道为什么,我的验证不起作用 我得到了电子邮件地址,但是验证不起作用,我可以发送一个完全空的表单。有什么想法吗php电子邮件地址验证不起作用?,php,email,Php,Email,嘿,伙计们, 我知道用PHP发送电子邮件有很多更好的方法。然而,为此目的,最简单的解决方案是完美的。唯一的问题是:我不知道为什么,我的验证不起作用 我得到了电子邮件地址,但是验证不起作用,我可以发送一个完全空的表单。有什么想法吗 <?php //Email $Name = Trim(stripslashes($_POST['author'])); $EmailFrom = Trim(stripslashes($_POST['email'])); $Subject = Trim(strips
<?php
//Email
$Name = Trim(stripslashes($_POST['author']));
$EmailFrom = Trim(stripslashes($_POST['email']));
$Subject = Trim(stripslashes($_POST['subject']));
$Comment = Trim(stripslashes($_POST['comment']));
$EmailTo = "myemail@address.com";
/*$Name = "Some Name";
$EmailFrom = "test@test.com";
$Subject = "Test";
$Comment = "Why is the validation not working, don't get it?";
$EmailTo = "myemail@address.com";*/
/*echo $Name . " length: " . strlen($Name) . "<br/>";
echo $EmailFrom . " length: " . strlen($EmailFrom) . "<br/>";
echo $Subject . " length: " . strlen($Subject) . "<br/>";
echo $Comment . " length: " . strlen($Comment) . "<br/>";
echo $EmailTo . " length: " . strlen($EmailTo) . "<br/>";*/
//***************************
//Validation
//***************************
$validationOK=true;
if ($Name == "") $validationOK=false;
if (isValidEmail($EmailFrom) == 0) $validationOK=false;
if ($Subject == "") $validationOK=false;
if ($Comment == "") $validationOK=false;
function isValidEmail( $email = null ) {
return preg_match( "/^[\d\w\/+!=#|$?%{^&}*`'~-][\d\w\/\.+!=#|$?%{^&}*`'~-]*@[A-Z0-9][A-Z0-9.-]{1,61}[A-Z0-9]\.[A-Z]{2,6}$/ix", $email );
}
if (!$validationOK) {
print "error";
}
//***************************
//Order
//***************************
$Body = "Contactform";
$Body .= "\n\n";
$Body .= $Comment;
// Email Headers with UTF-8 encoding
$email_header = "From: " . $EmailFrom . "\r\n";
$email_header .= "Content-Type: text/plain; charset=UTF-8\r\n";
$email_header .= "Reply-To: " . $EmailFrom . " \r\n";
// send email
$success = mail($EmailTo, $Subject, $Body, $email_header);
//***************************
//Success or Error
//***************************
if ($success){
print "success";
}
else{
print "error";
}
?>
您需要在条件之后返回
if (!$validationOK) {
print "error";
// return or exit
}
不要继续发送邮件打印“错误”后,脚本不会结束。您应该结束脚本或进行一些其他更改,以便不会在出现错误时发送脚本。例如:
if (!$validationOK) {
print "error";
exit;
}
此代码:
if (!$validationOK) {
print "error";
}
不会阻止您的程序发送邮件,它只打印错误消息。如果$validationOK为false,您将打印单词error,但此时您不会停止脚本,因此php将继续处理之后的命令
试试下面的方法
if (!$validationOK) {
print "error";
exit();
}
当有经过尝试和测试的免费软件为您提供验证功能时,不要编写自己的电子邮件验证功能
欢迎您使用我的免费PHP函数is\u email()
验证地址。可在[此处][1]下载
它将确保地址完全符合RFC 5321。它还可以选择检查域是否实际存在,是否有MX记录
你不应该依赖验证器来告诉你用户的电子邮件地址是否确实存在:一些ISP向用户提供不符合要求的地址,特别是在不使用拉丁字母的国家。更多关于电子邮件验证的文章,请参见:[http://isemail.info/about][2] .您也可以使用以下功能检查域:checkdnsrr!!无论如何,看看php文档!!