ホームページ > データベース > mysql チュートリアル > jQuery Validate リモート メソッドが一意のユーザー名を検出しないのはなぜですか?

jQuery Validate リモート メソッドが一意のユーザー名を検出しないのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-13 07:08:12
オリジナル
738 人が閲覧しました

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

jQuery Validate リモート メソッドで既存のユーザー名が検出されない

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート