首頁 >後端開發 >php教程 >為什麼我的 jQuery 驗證遠端方法始終指示使用者名稱可用性?

為什麼我的 jQuery 驗證遠端方法始終指示使用者名稱可用性?

Barbara Streisand
Barbara Streisand原創
2024-12-15 04:47:15839瀏覽

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