jquery远程验证用户名检查

时间:2013-09-24 09:23:00

标签: php jquery jquery-validate

我一直在环顾四周,我仍然无法弄清楚为什么我的用户名验证无效。我只是检查用户名是否存在以及是否显示错误消息。以下是我的用户名字段的规则。

username:
        {
            required: true,
            remote: "user-check.php"
        },

这是消息部分。

username:
        {
            required: 'Please enter a username',
            remote: 'Username is taken'
        },

我的user-check.php文件看起来像这样。

if(isset($_GET['username']) {
$user = $_GET['username'];

$query = $pdo->prepare('SELECT * FROM clients WHERE client_username = ?');

$query->bindValue(1, $user);

$query->execute();

$usercheck = $query->rowCount();

if($usercheck < 1) {
    $valid = "false"; //    <---yes, Validate is expecting a string
} else {
    $valid = "true"; //    <---yes, Validate is expecting a string
}
echo json_encode($valid);

}

任何反馈都会让我疯狂。附:我是新来发布的,抱歉格式化。

固定和工作。 所有错误似乎来自user-check.php 这是固定版本。

header('Content-type: application/json');


$user = $_REQUEST['username'];

$query = $pdo->prepare('SELECT * FROM clients WHERE client_username = ?');

$query->bindValue(1, $user);

$query->execute();

$usercheck = $query->rowCount();

if($usercheck == 0) {
    $valid = 'true';
} else {
    $valid = 'false'; 
}
echo $valid;

1 个答案:

答案 0 :(得分:0)

请注意原始代码:

if($usercheck < 1) {   // <-- if no database match
    $valid = "false";  // <-- false => "failed" validation
} else {
    $valid = "true";
}

当数据库中没有匹配项时,您将返回false。这只是倒退。如果没有匹配项,则必须返回true,表示字段“已通过”验证。

现在请注意“固定”版本中逻辑的反转方式:

if($usercheck == 0) {   // <-- if no database match
    $valid = 'true';    // <-- true => "passed" validation
} else {
    $valid = 'false'; 
}

As per jQuery Validate "remote method" documentation

  

响应评估为JSON 对于有效元素必须为true,并且可以是任何falseundefinednull表示无效元素,使用默认消息;或者一个字符串,例如。 “该名称已被采用,请尝试使用peter123”以显示为错误消息。