2011-07-27 20 views
1

私はjqueryの電子メールの検証にいくつか問題がありますが、私はこの電子メールがすでに登録されているかどうかをチェックしたいと思います。ここでエラーメッセージ)JQueryの電子メールは既に登録されています

を示さないドキュメントによれば、遠隔検証の応答は、JSONエンコードスクリプト

$(document).ready(function(){ 
    $("add_form").validate({ 
     rules: { 
      email: { 
     required: true, 
     email: true, 
      remote: "emails.php" 
    }, 
}, 
messages: { 
     email: { 
    remote: jQuery.format("{0} is already in use") 
     } 
}, 
}); 

とemails.phpファイル・コードここで

<?php 
$request = trim(strtolower($_REQUEST['email'])); 

require 'db.inc.php'; 
$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or 
die ('Unable to connect. Check your connection parameters.'); 
mysql_select_db(MYSQL_DB, $db) or die(mysql_error($db)); 


$query = 'SELECT email FROM Users WHERE email="'.$request.'"'; 
$result = mysql_query($query, $db) or die(mysql_error()); 
$valid = 'true'; 
if (mysql_num_rows($result)>0) 
{ 
    $valid = '"Thats already taken."'; 
} 
echo $valid; 

?> 
+4

あなたのSQLはインジェクションに開放されています。このようなSQL文にダンプする前に、変数をサニタイズする必要があります。 PHPのPDOクラスや少なくともmysql_real_escape_string()を使って調べてください – Treffynnon

+0

このスクリプトにはどのようなバリデーションプラグインが使用していますか? – Treffynnon

+0

あなたは文書の準備ができていますが、タグを適切に閉じていません。あなたのjQueryの最後に '});'を追加する – Val

答えて

0

になっていますdブール値で、JSONでエンコードされた文字列ではありません。

"true"または "false"があり、json_encode()を介して "\" true \ "または" \ "false \" "になりますが間違っています。実際の真または偽は「真」または「偽」になりますが、これは正しいです。

ヘッダ(「コンテンツタイプ:アプリケーション/ JSON」)JSONに応答コンテンツタイプを設定

も良い考えかもしれません。

関連する問題