Javascript 有效的电子邮件仍然返回false

Javascript 有效的电子邮件仍然返回false,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,所以我试着检查一封电子邮件是否有效,我知道我只能用JS,但我更喜欢我的方式。这就是我要做的 //Get data if(isset($_POST['email'])){ $email = htmlspecialchars($_POST['email'], ENT_QUOTES, 'UTF-8') } else{ header('Location: /'); } if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ echo 1;

所以我试着检查一封电子邮件是否有效,我知道我只能用JS,但我更喜欢我的方式。这就是我要做的

//Get data
if(isset($_POST['email'])){
    $email = htmlspecialchars($_POST['email'], ENT_QUOTES, 'UTF-8')
}
else{
    header('Location: /');
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
    echo 1;
}
else{
    echo 0;
}
还有我的JS

    $(document).ready(function() {
    //listens for typing on the desired field
    $("#email").keyup(function() {
        //gets the value of the field
        var email = $("#email").val(); 

        //here is where you send the desired data to the PHP file using ajax
        $.post("../classes/validate.php", {email:email},
            function(result) {
                if(result == 1) {
                    //Email is valid
                    console.log("Good");
                }
                else {
                    //Email is invalid
                    console.log("Bad");
                }
            });
     });
});

现在不管我输入什么,它总是返回
坏的
。即使有一封有效的电子邮件。有什么想法吗?

在验证之前,您不应该使用htmlspecialchars()。仅用于演示,即在以HTML格式输出电子邮件时。

将电子邮件存储为变量后,您将丢失一个分号

//Get data
if(isset($_POST['email'])){
    $email = htmlspecialchars($_POST['email'], ENT_QUOTES, 'UTF-8');
}
else{
    header('Location: /');
}
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
    echo 1;
}
else{
    echo 0;
}

在验证电子邮件地址之前,为什么要调用
htmlspecialchars()
?您可能正在更改地址。因此,永远不要使用
htmlspecialchars()
收集数据,而只能在显示时使用?不是真的!在清理/转义用户输入并将其存储到数据库之前,首先验证用户输入。