PHP电子邮件和url验证

PHP电子邮件和url验证,php,html,css,Php,Html,Css,所以我用php、css和html制作了一个小小的联系表单。但当我尝试添加电子邮件验证时,它仍然会发送电子邮件,并且不会将输入的样式更改为红色(就像我希望的那样)。我遇到的另一个问题是按钮重定向到页面顶部(我不希望它这样做)。最后,我可以让输入保留文本,而不是在提交后将其删除 HTML: 联系方式 提交 PHP: 尝试使用php验证电子邮件 <?php if (isset($_POST) && !empty($_POST)) { $name = $_P

所以我用php、css和html制作了一个小小的联系表单。但当我尝试添加电子邮件验证时,它仍然会发送电子邮件,并且不会将输入的样式更改为红色(就像我希望的那样)。我遇到的另一个问题是按钮重定向到页面顶部(我不希望它这样做)。最后,我可以让输入保留文本,而不是在提交后将其删除

HTML:


联系方式
提交
PHP:


尝试使用php验证电子邮件

<?php 

if (isset($_POST) && !empty($_POST)) {
        $name = $_POST['name'];
        $email = $_POST['email'];
        $phone = $_POST['phone'];
        $visitors_site = $_POST['site'];
        $message = $_POST['message'];

        $email_from = 'mattmowen1@gmail.com';
        $email_subject = 'New Contact Submission';

        $to = 'mattmowen1@gmail.com';
        $headers = "From:" . $email;
        $headers = "Contact Submission From: " . $email;
        $message1 = "Name: " . $name;
        $message2 = "\n\nEmail: " . $email;
        $message3 = "\n\nPhone: " . $phone;
        $message4 = "\n\nTheir Site: " . $visitors_site;
        $message5 = "\n\nMessage: " . $message;
        $email_body = $message1 . $message2 . $message3 . $message4 . $message5;

        if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
          mail($to, $email_subject, $email_body,$headers);
        } else {
          echo "<style>#email-input {color:red}</style>";
        }
}
?>
要处理JSON请求,您需要发送JSON对象作为响应。因此,将php代码段更改为:

if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
  mail($to, $email_subject, $email_body,$headers);
  exit(json_encode(array('error' => 0)));
} else {
  exit(json_encode(array('error' => 1)));
}

不。即使不提交,样式也会变为红色。但这次它没有发送电子邮件。您需要检查
$\u POST
是否为
!empty
仅在表单获得提交时执行php代码。让我更新我的答案代码虽然这是一个有效的编辑,但我不明白你为什么选择使用
==false
,而你本可以删除
。如果电子邮件有效,它将返回电子邮件,如果无效,它将返回false,因此添加
==false
似乎是多余的。加载时仍然是红色,而不是无效提交时。此外,该按钮还会将您引导到页面顶部。还有一个问题,我如何将文本保存在那里,并将其变为红色。@bc2946088您可以访问此处验证您的php验证逻辑()@bc2946088
filter\u var()
如果有效,则不会返回
true
;如果有效,它将返回过滤后的值。在某些情况下,可能是
0
或其他一些“假”值。因此,您必须使用
false!==filter_var(/*etc.*/)
。啊,我看到,在我对有效和无效的简单测试中,它工作得非常好。谢谢你的解释。为了清楚起见,我将删除我的评论@DecentDabbler谢谢你的问题Matt,但是对于未来,我想请你把你的问题分开,因为你现在基本上同时问三个问题。有关原因的说明,请参见。
<?php 

if (isset($_POST) && !empty($_POST)) {
        $name = $_POST['name'];
        $email = $_POST['email'];
        $phone = $_POST['phone'];
        $visitors_site = $_POST['site'];
        $message = $_POST['message'];

        $email_from = 'mattmowen1@gmail.com';
        $email_subject = 'New Contact Submission';

        $to = 'mattmowen1@gmail.com';
        $headers = "From:" . $email;
        $headers = "Contact Submission From: " . $email;
        $message1 = "Name: " . $name;
        $message2 = "\n\nEmail: " . $email;
        $message3 = "\n\nPhone: " . $phone;
        $message4 = "\n\nTheir Site: " . $visitors_site;
        $message5 = "\n\nMessage: " . $message;
        $email_body = $message1 . $message2 . $message3 . $message4 . $message5;

        if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
          mail($to, $email_subject, $email_body,$headers);
        } else {
          echo "<style>#email-input {color:red}</style>";
        }
}
?>
<script>
    var url = 'email.php';
    $.ajax({
        url : url,
        type : "POST",
        dataType : "JSON",
        data : $('#contact-form').serialize(),
        success : function(response) {
            if (response.error == 0) { // success
                $('#contact-form')[0].reset();
                alert('Form submitted successfully. We will contact you asap.');
            } else { // error
                $('#email-input').css('color', 'red');//in case of email error
                alert('ERROR MESSAGE');//form is invalid
            }
        }
    })

</script>
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
  mail($to, $email_subject, $email_body,$headers);
  exit(json_encode(array('error' => 0)));
} else {
  exit(json_encode(array('error' => 1)));
}