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 코드는 $name 변수를 삭제하기 위해 mysql_real_escape_string을 사용했습니다. 그러나 입력 내용을 삭제하려면 보다 포괄적인 접근 방식이 필요했습니다. 또한 올바른 응답을 생성하기 위해 if-else 문의 논리가 반전되었습니다. if ($result != 0)는 사용자 이름이 존재함을 나타냅니다.
위 내용은 내 jQuery가 원격 메소드를 검증하면 항상 사용자 이름 가용성이 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!