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 스크립트에서는 SQL 삽입을 방지하기 위해 mysql_real_escape_string을 사용했지만 쿼리에 $username 변수가 포함되지 않았습니다. 이로 인해 사용자 이름이 사용되었음을 나타내는 긍정적인 결과가 항상 반환되는 잘못된 검사가 발생했습니다.
개정된 PHP 스크립트를 사용하면 쿼리가 특정 사용자 이름의 존재를 올바르게 확인하여 정확한 유효성 검사를 보장합니다.
위 내용은 내 jQuery가 원격 메서드를 확인하면 항상 사용자 이름이 존재함을 나타내는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!