尝试使用 jQuery.validate 验证数据库中用户名是否存在时,该错误始终会被触发,表明用户名已被占用,即使尚未被占用。用于验证的 PHP 代码出现问题。
初始实现使用以下 jQuery 代码:
$("#signupForm").validate({ rules: { username: { required: true, minlength: 3, remote: "check-username.php", }, }, messages: { username: { remote: "This username is already taken! Try another.", }, }, });
以及以下用于验证的 PHP 脚本:
<?php require_once "./source/includes/data.php"; header('Content-type: application/json'); $name = mysql_real_escape_string($_POST['username']); $check_for_username = mysql_query("SELECT username FROM mmh_user_info WHERE username='$name'"); if (mysql_num_rows($check_for_username) > 0) { $output = true; } else { $output = false; } echo json_encode($output); ?>
问题已通过修改解决PHP 脚本。修改后的代码:
<?php require_once "./source/includes/data.php"; header('Content-type: application/json'); $request = $_REQUEST['username']; $query = mysql_query("SELECT * FROM mmh_user_info WHERE username ='$username'"); $result = mysql_num_rows($query); if ($result == 0){ $valid = 'true';} else{ $valid = 'false'; } echo $valid; ?>
初始PHP代码使用mysql_real_escape_string来清理$name变量。然而,需要一种更全面的方法来净化输入。此外,if-else 语句的逻辑被反转以产生正确的响应:if ($result != 0) 将指示用户名存在。
以上是为什么我的 jQuery 验证远程方法始终指示用户名可用性?的详细内容。更多信息请关注PHP中文网其他相关文章!