> 데이터 베이스 > MySQL 튜토리얼 > 내 jQuery 유효성 검사 원격 메서드가 고유한 사용자 이름을 감지하지 못하는 이유는 무엇입니까?

내 jQuery 유효성 검사 원격 메서드가 고유한 사용자 이름을 감지하지 못하는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-13 07:08:12
원래의
738명이 탐색했습니다.

Why Isn't My jQuery Validate Remote Method Detecting Unique Usernames?

jQuery 유효성 검사 원격 메서드가 기존 사용자 이름을 감지하지 못함

jQuery 유효성 검사 프레임워크를 사용하여 데이터베이스에서 사용자 이름의 고유성을 확인하려고 하면 불일치가 발생할 수 있습니다. 원격 메소드는 지정된 사용자 이름이 이미 존재하는지 확인하려고 시도할 때 실제 상태에 관계없이 존재한다고 일관되게 보고할 수 있습니다.

잘못된 구성 및 해결 방법

제공된 코드를 검사하면 다음과 같습니다. 문제는 데이터베이스 확인을 담당하는 PHP 스크립트에서 비롯된 것으로 보입니다. 수정된 PHP 스크립트에 대한 분석은 다음과 같습니다.

require_once "./source/includes/data.php";
header('Content-type: application/json');
$username = mysql_real_escape_string($_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;
로그인 후 복사

수정 버전은 주로 결함이 있는 SQL 쿼리를 해결하는 데 중점을 둡니다. 초기 스크립트에 사용된 원래 쿼리는 안전하게 이스케이프되지 않은 사용자 이름을 확인하려고 시도했기 때문에 주입 공격에 취약했습니다. 수정된 스크립트는 mysql_real_escape_string을 활용하여 데이터베이스를 쿼리하기 전에 사용자 이름을 적절하게 이스케이프 처리합니다.

또한 개선된 쿼리 구조는 mysql_num_rows를 사용하여 SQL 쿼리 결과를 계산하므로 사용자 이름이 데이터베이스에 이미 존재하는지 여부를 정확하게 확인할 수 있습니다. 데이터 베이스. 결과가 0이면 사용자 이름이 고유한 것으로 간주되고 $valid 변수가 true로 설정됩니다. 그렇지 않은 경우에는 false로 설정됩니다.

이 수정된 PHP 스크립트를 사용하면 jQuery 유효성 검사의 원격 방법이 사용자 이름이 데이터베이스에 이미 존재하는지 여부를 정확하게 판단하여 사용자 등록 시 고유한 사용자 이름이 적용되도록 할 수 있습니다.

위 내용은 내 jQuery 유효성 검사 원격 메서드가 고유한 사용자 이름을 감지하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿