【发布时间】:2013-06-08 20:50:46
【问题描述】:
您好,我正在尝试验证注册表单中的电子邮件地址。我想检查该地址是否存在于数据库中;
我有以下功能:
function validateEmailRepeat(){
// check if email exists in the database;
var emailVal = $('#email').val();
// assuming this is a input text field
$.post('check_email.php', {'email' : emailVal}, function(data) {
if(data==1)
{
email.addClass("error");
emailInfo.text("Adress exists");
emailInfo.addClass("error");
dataExist=1;
}
else {
email.removeClass("error");
emailInfo.text("Valid adress");
emailInfo.removeClass("error");
dataExist=0;
}
});
if(dataExist==1)
return false;
else
return true;
}
check_email.php 看起来像这样:
require_once('db.php');
if (isset($_POST['email'])){
$email=mysqli_real_escape_string($con,$_POST['email']);
$sql = "SELECT * FROM users WHERE `username`='".$email."'";
$select=mysqli_query($con,$sql) or die("fail");
$row = mysqli_num_rows($select);
if ($row >0) {
echo 1;
}else echo 0 ;
}
else
echo "post error";
我是新手。所以不要太强硬。提前致谢。
乐:对不起!我忘记了问题... 问题是,如果我在函数形式 $.post 之外定义 var dataExist,我的函数将返回 true 如果我让它现在在函数中,我会得到“dataExist is not defined”错误并返回true
Le:PHP 以我想要的方式返回预期的 1 和 0..
乐: 似乎定义了
var dataExist=0;
在函数validateEmailRepeat() 之外解决了这个问题。
如果还有其他更优雅的方法,请告诉我,因为这对我来说似乎有点愚蠢。
【问题讨论】:
-
你已经告诉我们你在做什么,但这里的问题是什么?
-
请注意:johndoe@gmail.com、john.doe@gmail.com、John.Doe@gmail.com、johndoe@gmail.com 等。都是同一个电子邮件
-
你忘了问一个问题。您编写的代码是否存在一些明显的问题?它的行为不符合预期吗?有错误吗?您通过什么方式寻求帮助?
-
+1 用于简单地使用
mysqli。您仍然对 SQL 注入持开放态度,应该查看 prepared statements,但是通过使用mysqli,您比我查看的 90% 的其他问题做得更好在这个网站上。继续努力,并考虑使用 prepared statements。 -
谢谢!我肯定会很快!