首页 >后端开发 >php教程 >为什么我的 jQuery 验证远程方法始终指示用户名可用性?

为什么我的 jQuery 验证远程方法始终指示用户名可用性?

Barbara Streisand
Barbara Streisand原创
2024-12-15 04:47:15833浏览

Why Does My jQuery Validate Remote Method Always Indicate Username Availability?

jQuery 验证远程方法无法检查用户名可用性

问题描述

尝试使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn