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 Validate リモート メソッドが一意のユーザー名を検出しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。