PHP电子邮件表单验证

PHP电子邮件表单验证,php,email,validation,Php,Email,Validation,我正在为一个网站制作评论表单,并试图防止垃圾邮件发送者。我从这个函数中获取了validEmail函数 我在使用函数方面不是很有经验。这是调用函数并验证用户电子邮件地址的正确方法吗?如有任何建议,我们将不胜感激。多谢各位 $email = $_POST['email']; if (validEmail($email)) { $to = 'fsddfsdfa@gmail.com'; $subject = 'the subject'; $message = 'hello'; $heade

我正在为一个网站制作评论表单,并试图防止垃圾邮件发送者。我从这个函数中获取了validEmail函数

我在使用函数方面不是很有经验。这是调用函数并验证用户电子邮件地址的正确方法吗?如有任何建议,我们将不胜感激。多谢各位

$email = $_POST['email'];

if (validEmail($email)) {

$to      = 'fsddfsdfa@gmail.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com';

mail($to, $subject, $message, $headers);

print "Form submitted successfully: <br>Your name is <b>".$_POST['cname']."</b> and your email is <b>".$_POST['email']."</b><br>";

} else {

print "There was an error with your form submission.";

}
$email=$\u POST['email'];
if(有效电子邮件($email)){
$to$fsddfsdfa@gmail.com';
$subject='主题';
$message='hello';
$headers='来自:webmaster@example.com';
邮件($to、$subject、$message、$headers);
打印“表单提交成功:
您的姓名是“$\u POST['cname']”,您的电子邮件是“$\u POST['email']”; }否则{ 打印“提交表单时出错。”; }
包含
有效电子邮件($email)的函数应包含在您的文件中:

包括“whatever.php”

(或者,您可以将函数复制并粘贴到与代码相同的文件中)

您的
if
语句应该如下所示:

if( validEmail( $email ) ) {
  // print your success message here
} else {
  // print your fail message here
}
if( validEmail( $email ) === true ) {
  // print your success message here
} else {
  // print your fail message here
}
在回答下面的评论时,您也可以这样写:

if( validEmail( $email ) ) {
  // print your success message here
} else {
  // print your fail message here
}
if( validEmail( $email ) === true ) {
  // print your success message here
} else {
  // print your fail message here
}

包含
validEmail($email)的函数应包含在您的文件中:

包括“whatever.php”

(或者,您可以将函数复制并粘贴到与代码相同的文件中)

您的
if
语句应该如下所示:

if( validEmail( $email ) ) {
  // print your success message here
} else {
  // print your fail message here
}
if( validEmail( $email ) === true ) {
  // print your success message here
} else {
  // print your fail message here
}
在回答下面的评论时,您也可以这样写:

if( validEmail( $email ) ) {
  // print your success message here
} else {
  // print your fail message here
}
if( validEmail( $email ) === true ) {
  // print your success message here
} else {
  // print your fail message here
}

自5.2.0以来,PHP拥有自己的验证过滤器,可用于检查用户是否输入了正确的电子邮件地址。没有必要依赖你在互联网上找到的东西来达到这个目的,因为这些功能可能有缺陷或损坏。要使用filter_var()进行电子邮件验证,解决方案如下:

if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ 
    print "E-mail is correct";
} else {
    print "E-mail is not correct";
}

(还要注意,问题中的原始示例代码在其中一个打印中缺少分号)。

自5.2.0以来,PHP拥有自己的验证过滤器,可用于检查用户是否输入了正确的电子邮件地址。没有必要依赖你在互联网上找到的东西来达到这个目的,因为这些功能可能有缺陷或损坏。要使用filter_var()进行电子邮件验证,解决方案如下:

if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ 
    print "E-mail is correct";
} else {
    print "E-mail is not correct";
}

(还要注意,问题中的原始示例代码在其中一个打印中缺少分号)。

整个链接的
validEmail()
函数可以替换为:

function validEmail($email)
{
    if (filter_var('bob@example.com', FILTER_VALIDATE_EMAIL) !== false) {
        $domain = preg_split("/@/", $email);
        $domain = $domain[count($domain) - 1];
        if (checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")) {
            return true;
        }
    }
    return false;
}

虽然我只是从您链接的文章中获取了
checkdnsr()
函数。我对它不熟悉,以前也没用过。内置的
filter\u var()
函数可能是您真正想要使用的所有函数,因为检查DNS需要时间(因此每次有人向您的表单提交内容时,您的脚本可能会进行两次DNS查找)。

整个链接的
validEmail()
函数可以替换为:

function validEmail($email)
{
    if (filter_var('bob@example.com', FILTER_VALIDATE_EMAIL) !== false) {
        $domain = preg_split("/@/", $email);
        $domain = $domain[count($domain) - 1];
        if (checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")) {
            return true;
        }
    }
    return false;
}


虽然我只是从您链接的文章中获取了
checkdnsr()
函数。我对它不熟悉,以前也没用过。内置的
filter\u var()
函数可能是您真正想要使用的所有函数,因为检查DNS需要时间(因此,每次有人向您的表单提交内容时,您的脚本可能会执行两次DNS查找)。

所以像这样调用该函数?我是否必须检查isValid是否返回真值,或者这是隐含的?函数的最后一行返回$isValid。谢谢尼克,我已经扩展了我的解决方案来帮助:)。谢谢你肯定回答了我的问题。使用FILTER\u VALIDATE\u EMAIL是否是完成此过程的更好方法?谢谢你说实话。。我更喜欢
if(!filter\u var($email,filter\u VALIDATE\u email)){…}
yes。那么像这样调用函数?我是否必须检查isValid是否返回真值,或者这是隐含的?函数的最后一行返回$isValid。谢谢尼克,我已经扩展了我的解决方案来帮助:)。谢谢你肯定回答了我的问题。使用FILTER\u VALIDATE\u EMAIL是否是完成此过程的更好方法?谢谢你说实话。。我更喜欢
如果(!filter\u var($email,filter\u VALIDATE\u email)){…}
是。我应该像其他评论者建议的那样使用filter\u VALIDATE\u email吗?或者这是一种更好的验证方法吗?正如你所注意到的,我还使用了
filter\u var()
filter\u validate\u EMAIL
。我只是结合了DNS检查功能,你在你的问题链接使用。谢谢你的帮助。尝试向您的销售代表提供尽可能多的积分。真的很感激,我应该像其他评论者建议的那样使用过滤邮件吗?或者这是一种更好的验证方法吗?正如你所注意到的,我还使用了
filter\u var()
filter\u validate\u EMAIL
。我只是结合了DNS检查功能,你在你的问题链接使用。谢谢你的帮助。尝试向您的销售代表提供尽可能多的积分。我真的很感激这个问题有很多很好的答案。非常感谢您对概念的扩展。我选择@vivid colors提供的答案是因为:它直接回答了如何调用函数,这是第一个响应。但是,我相信我会根据提供的意见和信息使用FILTER_VALIDATE_电子邮件。在这种情况下,我希望我能奖励多个正确答案。谢谢大家。这个问题真的有很多很好的答案。非常感谢您对概念的扩展。我选择@vivid colors提供的答案是因为:它直接回答了如何调用函数,这是第一个响应。但是,我相信我会根据提供的意见和信息使用FILTER_VALIDATE_电子邮件。在这种情况下,我希望我能奖励多个正确答案。谢谢大家,非常感谢你们指出这一点。我很可能会对我的表单使用FILTER\u VALIDATE\u电子邮件。我会的