嘗試使用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中文網其他相關文章!