>백엔드 개발 >PHP 튜토리얼 >내 jQuery가 원격 메소드를 검증하면 항상 사용자 이름 가용성이 표시되는 이유는 무엇입니까?

내 jQuery가 원격 메소드를 검증하면 항상 사용자 이름 가용성이 표시되는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-15 04:47:15838검색

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

jQuery Validate 원격 메서드가 사용자 이름 가용성을 확인하지 못함

문제 설명

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.