jQuery远程验证

iKa*_*ars 6 validation jquery

我有jQuery远程验证的问题.我正在检查电子邮件是否已注册,远程验证是否有效,但它只显示值 - true或false,我无法提交表单.

jQuery代码:

$("#form").validate({
  rules: {
    email: {
      required: true,
      email: true,
      remote: "check-email.php"

    }
  }
}); 
Run Code Online (Sandbox Code Playgroud)

check-mail.php代码:

$email = trim(strtolower($_REQUEST['email']));


$checkemail = mysql_query("SELECT * FROM users WHERE email = '".$email."'");  

if(mysql_num_rows($checkemail) == 1)
{
$valid = 'false';
}
else
{
$valid = 'true';
} //end of $checkemail if statemant


echo json_encode($valid);
Run Code Online (Sandbox Code Playgroud)

Tom*_*lak 13

$checkemail = mysql_query("SELECT * FROM users WHERE email = '".$email."'");  
Run Code Online (Sandbox Code Playgroud)

永远永远永远 永远做到这一点.这就是问题:SQL注入,随机错误(单引号在电子邮件地址中有效,BTW).

参数化查询,使用它们.它只是代码的几行,但它是一个像谷仓门一样宽的安全漏洞和安全的数据库交互之间的区别.

if(mysql_num_rows($checkemail) == 1)
{
$valid = 'false';
}
else
{
$valid = 'true';
}
Run Code Online (Sandbox Code Playgroud)

是一种非常冗长的说法

$valid = mysql_num_rows($checkemail) == 1;
Run Code Online (Sandbox Code Playgroud)

根据文档,远程验证的响应是JSON编码的布尔值,而不是JSON编码的字符串.

你有"true""false"将会成为"\"true\"""\"false\""通过json_encode()哪个是错的.实际truefalse将成为"true""false",这是正确的.

将响应内容类型设置为JSON也可能是一个好主意:

header('Content-type: application/json');
Run Code Online (Sandbox Code Playgroud)