繁体   English   中英

jquery 验证 - 远程总是返回真

[英]jquery validate - remote always returns true

我有一个表单,我正在使用 jQuery 验证插件。

我还使用远程检查用户名和电子邮件是否可用,但我总是从脚本中得到错误信息。

这是jquery验证部分:

$(document).ready(function () {
    $('#registration').validate({
        rules: {
            email: {
                email: true,
                remote:{
                    url: "./php/checkemail.php",
                    type: "POST",
                }
            },
            username: {
                minlength: 4,
                maxlength: 16,
                remote: {
                    url: "./php/checkusername.php",
                    type: "POST",
                }
            },
            messages: {
                email: {
                    email: "Please enter a valid e-mail address.",
                    remote: "This email is already registered.",
                },
                username: {
                    minlength: "Your username must be at least 4 characters long but less than 16",
                    maxlength: "Your username must be at least 4 characters long but less than 16",
                    remote: "This username is already registered.",
                },
                submitHandler: function(form) { 
                    $('#registration').ajaxSubmit();
                    return false;
                },
            });
        });

这是 checkemail.php 文件:

$mysqli = mysqli_init();
if(isset($_POST['email'])) {
    $email = mysqli_real_escape_string(strtolower($_POST['email']));
    $check= mysqli_query("SELECT * FROM users WHERE LOWER email = '$email'");
    if(mysqli_stmt_num_rows($check)!=0) {
        echo json_encode(false);
    } else {
        echo json_encode(true);
    }
}

谁能告诉我我做错了什么以及如何解决它?

此外,即使我更改脚本以向我发送 true,来自验证脚本的远程消息也不会出现在我的表单上。

我认为远程函数正在检查字符串。

所以试试这个:

if(mysqli_stmt_num_rows($check)!=0) {
    echo 'false';
} else {
    echo 'true';
}

所以,问题是我使用的 php 已被弃用,当我将其更改为新版本时,我做错了……所以正确的做法是这样的:

if(isset($_POST['email']))

{

$email = mysqli_real_escape_string($link, $_POST['email']);

$check= mysqli_query($link, "SELECT * FROM users WHERE email = '".$email."'") or die(mysqli_error($link));

if(mysqli_num_rows($check)!=0)

{

 echo 'false';

}别的{

 echo 'true';

}

}

mysqli_close($link);

?>

其中 $link 是到 mysql 数据库的连接:

$link = mysqli_connect("$db_host", "$db_username", "$db_password", "$db_database") 要么死 ("Error " . mysqli_error($link));

现在它工作得很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM