首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery Remote验证

jQuery Remote验证
EN

Stack Overflow用户
提问于 2011-03-03 15:52:00
回答 3查看 21.2K关注 0票数 6

我有一个关于jQuery远程验证的问题。我正在检查电子邮件是否注册,远程验证工作,但它只显示值-真或假,我不能提交表单。

jQuery代码:

代码语言:javascript
复制
$("#form").validate({
  rules: {
    email: {
      required: true,
      email: true,
      remote: "check-email.php"

    }
  }
}); 

check-mail.php代码:

代码语言:javascript
复制
$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);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-03 16:06:52

代码语言:javascript
复制
$checkemail = mysql_query("SELECT * FROM users WHERE email = '".$email."'");  

永远不要做这件事。这是asking for trouble:SQL注入,随机错误(单引号在电子邮件地址中有效)。

parameterized queries,使用它们。这只是几行代码,但这是安全漏洞和安全数据库交互之间的区别。

代码语言:javascript
复制
if(mysql_num_rows($checkemail) == 1)
{
$valid = 'false';
}
else
{
$valid = 'true';
}

是一种非常冗长的表达方式

代码语言:javascript
复制
$valid = mysql_num_rows($checkemail) == 1;

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

您有"true""false",它们将通过json_encode()变成"\"true\"""\"false\"",这是错误的。实际的truefalse将变为"true""false",这是正确的。

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

代码语言:javascript
复制
header('Content-type: application/json');
票数 13
EN

Stack Overflow用户

发布于 2011-03-03 16:02:36

当需要布尔值时,它可能只是返回字符串。也许可以尝试以下操作:

代码语言:javascript
复制
if(mysql_num_rows($checkemail) == 1)
{
$valid = false;
}
else
{
$valid = true;
}
票数 1
EN

Stack Overflow用户

发布于 2012-03-03 15:28:20

对于那些不能使用上述技术让remote validation正常工作的人,以下是我的两点意见,它们可以帮助确保您走在正确的轨道上。

1)。它只适用于v1.6.1及更高版本。坚持使用最新版本的jQuery http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js

2)。选择“同步”远程执行,默认为异步。将async设置为false。

代码语言:javascript
复制
$("#form").validate({
  rules: {
    email: {
      required: true,
      email: true,
      remote: { url:"check-email.php", async:false }
    }
  }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5178012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档