ホームページ >バックエンド開発 >PHPチュートリアル >jQuery Validate リモート メソッドが常にユーザー名の可用性を示すのはなぜですか?

jQuery Validate リモート メソッドが常にユーザー名の可用性を示すのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-15 04:47:15833ブラウズ

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 コードでは、mysql_real_escape_string を使用して $name 変数をサニタイズしました。ただし、入力をサニタイズするためのより包括的なアプローチが必要でした。さらに、if-else ステートメントのロジックが反転されて、正しい応答が生成されます。if ($result != 0) は、ユーザー名が存在することを示します。

以上がjQuery Validate リモート メソッドが常にユーザー名の可用性を示すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。