【发布时间】:2013-05-16 21:19:00
【问题描述】:
我正在使用 JQuery Bassistance Form Validation 插件,一切正常,直到我尝试检查 MySQL 数据库中的现有电子邮件。
这是我的代码:
$(document).ready(function(){
$('#signup').validate({
rules: {
email: {
required: true,
email: true,
remote: {
type: 'POST',
url: "email_check.php"
}//end remote
}//end email
},//end rules
messages: {
email: {
remote: "Email already in use."
}//end email
} //end messages
}); //end validate
}); //end ready
这是我的 email_check.php 文件:
<? php
$dbc = mysqli_connect('localhost', 'root', '', 'step1_db')
or die('Error connecting to the database');
$email = $_GET['email'];
$check_email = "SELECT * FROM users WHERE email = '$email'";
$existing = mysqli_query($dbc, $check_email);
$num_rows = $existing->num_rows;
if ($num_rows == 1){
echo json_encode(FALSE);
}else{
echo json_encode(TRUE);
}
mysqli_close($dbc);
?>
所以现在,如果我尝试将数据库中存在的电子邮件输入到我的表单中,我会收到无效电子邮件的默认错误消息,而不是“电子邮件已在使用中”。即使我输入了数据库中不存在的有效电子邮件,错误消息也不会消失。
我猜问题出在我的 php 文件中……我试过使用“return true”和“return false”,但它们也没有用。我将我的代码更改为 echo json_encode(FALSE) 从与此类似主题的答案中。 有没有人能指点一下这里发生了什么?
【问题讨论】:
-
查看控制台时看到的原始响应是什么?
-
我知道这可能只是一个简单的示例设置,但如果不是我想指出的是,您确实应该在将用户输入放入查询之前对其进行验证。
-
我实际上认为问题可能出在 javascript 验证所期望的返回值上。
json_econde(true)只返回字符串"true"。 -
感谢您的回复,OGC 尼克!通过验证,您的意思是使用 mysql_real_escape_string() 吗?另外,如何检查控制台的原始响应?抱歉,我对此很陌生,所以我的知识真的仅限于教给我的基础书籍和教程:(
-
另外,我尝试使用 return true/false,但我的问题仍然存在。
标签: php jquery validation email-validation