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