0

次のコードを使用して、データベースにユーザー名が既に存在するかどうかを確認します。私はjqueryバリデーターを使用しており、スクリプトを次のように構成しています。

$(document).ready(function(){

    // Validate
    // http://bassistance.de/jquery-plugins/jquery-plugin-validation/
    // http://docs.jquery.com/Plugins/Validation/
    // http://docs.jquery.com/Plugins/Validation/validate#toptions

        $('#profile').validate({
        rules: {
          name: {
            minlength: 2,
            required: true
          },
          username: {
            minlength: 2,
            required: true,
            remote: "../check-username.php"
          }
        },
            highlight: function(element) {
                $(element).closest('.control-group').removeClass('success').addClass('error');
            },
            success: function(element) {
                element
                .text('OK!').addClass('valid')
                .closest('.control-group').removeClass('error').addClass('success');
            }
      });

});

ここで、check-username.php は次のように定義されます。

<?php 

require_once('connection.php');

$check = "true"; 
$request = trim(strtolower($_REQUEST['username'])); 

mysql_select_db($dbname, $temp);
  $query_username=sprintf("SELECT * FROM users WHERE username = '$request'");

  $resultUsers = mysql_query($query_username, $temp) or die(mysql_error());

   $usernameFound= mysql_num_rows($resultUsers);

   if ($usernameFound> 0) { 
    $check = "false"; 
} 


header("Content-type: application/json; charset=windows-1251");
$result = $_REQUEST['username'].'('.$check.')';
echo $result;

?>

既存のユーザー名の認識を除いて、すべてうまくいきます。多分何かが間違っています:

remote: "../check-username.php"

またはphpファイル自体で。

誰かが私を助けることができますか?

編集1:

@MHR コードを試すと、次のようになります。

ここに画像の説明を入力

この場合、「user1」はデータベースに既に存在します。これは良いことですが、出力が入力の下に書き込まれるのは望ましくありません。

4

1 に答える 1

2

http://docs.jquery.com/Plugins/Validation/Methods/remote

ドキュメントには、応答がどうあるべきかについての輝かしい例がありませんが、JSON を示唆しています。

応答は JSON として評価され、有効な要素の場合は true である必要があり、無効な要素の場合は false、未定義、または null のいずれかになります。デフォルト メッセージを使用します。または文字列。「その名前は既に使用されています。代わりに peter123 を試してください」というエラー メッセージが表示されます。その他の例については、marketo のデモと milk のデモをご覧ください。

私の推測では、有効な場合は「true」を返し、そうでない場合は「false」を返す必要があります。

$check = true; 
$request = trim(strtolower($_REQUEST['username'])); 
mysql_select_db($dbname, $temp);
  $query_username=sprintf("SELECT * FROM users WHERE username = '$request'");
  $resultUsers = mysql_query($query_username, $temp) or die(mysql_error());
   $usernameFound= mysql_num_rows($resultUsers);
   if ($usernameFound> 0) { 
    $check = false; 
} 
header("Content-type: application/json; charset=windows-1251");
if($check){
  $check = "true";
}else{
  $check = "User: ".$request." already exist, please choose another user name.";
}
$result = "\"".$check."\"";
echo $result;
于 2013-04-25T09:43:46.623 に答える