我正在尝试使用jQuery,AJAX,PHP和MySQL来检查输入表单的电子邮件是否已存在于数据库中。 这是我目前的jQuery代码:
$.post('check-email.php', {'suEmail' : $suEmail}, function(data) {
if(data=='exists') {
validForm = false;
$suRememberMeCheckbox.css('top', '70px');
$suRememberMeText.css('top', '68px');
$signUpSubmit.css('top', '102px');
$tosppText.css('top', '115px');
$suBox.css('height', '405px');
$suBox.css('top', '36%');
$errorText.text('The email has been taken.');
return false;
};
});
这是我的PHP代码:
<?php include("dbconnect.php") ?>
<?php
$sql = "SELECT email FROM users WHERE email = " .$_POST['suEmail'];
$select = mysqli_query($connection, $sql);
$row = mysqli_fetch_assoc($select);
if (mysqli_num_rows($row) > 0) {
echo "exists";
}
?>
当我使用注册表单时,当我使用数据库中已有的电子邮件时,错误文本永远不会更改为我指定的内容,而是更改为我编码的其他一些错误情况。为什么这不起作用!非常感谢!
答案 0 :(得分:0)
Use This Code: Working Perfectly:
<?php
include("dbconnect.php");
$sql = "SELECT email FROM users WHERE email = '" .$_POST['suEmail']."' ";
$select = mysqli_query($connection, $sql);
$row = mysqli_fetch_assoc($select);
if (mysqli_num_rows($select) > 0) {
echo "exists";
}
?>
答案 1 :(得分:0)
如果它没有改变,则表示您的查询可能有错误。检查网络下浏览器上的开发人员选项。在那里你可以看到所有的ajax调用。点击查看回复。检查您的查询是否有错误。
此外,您还必须验证表单提交。 像。的东西。
if($_SERVER['REQUEST_METHOD'] = 'POST')
{
//maybe send a token over with the form to prevent form spoofing
if($_POST['token'] === $_SESSION['token'])
{
// all your code goes in here
// you provably want to check that is a real email also
// check email input against regular expression
if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
{
//if valid email to variable and escape data
$e = sanitizeString($_POST['email']);
}else
{
/// if not a real email to errors array
$reg_errors['email'] = 'Please enter a valid email address!';
}
}
}
您必须在查询中使用prepare语句。