首頁 > 後端開發 > php教程 > 為什麼我的 jQuery 驗證遠端方法總是表明使用者名稱存在?

為什麼我的 jQuery 驗證遠端方法總是表明使用者名稱存在?

Susan Sarandon
發布: 2024-12-27 17:54:12
原創
427 人瀏覽過

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

jQuery Validate 遠端方法:驗證使用者名稱是否存在

jQuery Validate 提供了一個遠端方法,使您能夠檢查某個值是否已存在於資料庫。但是,有時您可能會遇到驗證總是觸發的情況,表示使用者名稱即使沒有被佔用也已被佔用。

問題規格

考慮以下 jQuery PHP程式碼嘗試驗證使用者名稱是否存在:

// jQuery
$("#signupForm").validate({
    rules: {
        username: {
            required: true,
            minlength: 3,
            remote: "check-username.php"
        }
    },
    messages: {
        username:{
            remote: "This username is already taken! Try another."
        }
    }
});

// check-username.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 腳本。具體來說,應該更新用於檢查使用者名稱是否存在的查詢:

// check-username.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 來防止 SQL 注入,但它在查詢中沒有包含 $username 變數。這導致錯誤檢查始終傳回肯定結果,表示使用者名稱已被佔用。

使用修訂後的 PHP 腳本,查詢可以正確檢查特定使用者名稱是否存在,從而確保準確的驗證。

以上是為什麼我的 jQuery 驗證遠端方法總是表明使用者名稱存在?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板