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

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

Barbara Streisand
发布: 2024-12-15 04:47:15
原创
832 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板