我在 PHP 中有这个函数:
function login($email, $password) {
$email = sanitize_data($email);
$password = sanitize_data($password);
return (mysql_result(mysql_query("SELECT COUNT(`id`) FROM `registration` WHERE `email` = '$email' AND `password` = '$password'"),0) === 1) ? true : false;
}
我从一个条件语句中调用它,我确信它是可以的,因为如果我将 true 更改为 false,事情就会继续进行。我很确定错误出在某个地方,我已经多次检查了我的变量,而且我是 MySQL 的新手,所以我可能使用了错误的命令或其他东西。
如果查询发现至少 1 行包含电子邮件和密码的组合,则该函数应该返回 true,但它每次都返回 false。
这是 sanitize_data() 函数,即使我已经尝试摆脱它并且什么也没发生:
function sanitize_data ($data) {
return mysql_real_escape_string($data);
}
其余相关代码:
if (empty($_POST) === false) {
$email = $_POST['email'];
$password = $_POST['password'];
if(empty($email) === true || empty($password) === true) {
$errors[] = 'You need to enter a username and a password';
} else if (email_exists($email) === false){
$errors[] = 'Your email is not registered';
} else {
if(login($email, $password) === false) {
$errors[] = "That username/password combination doesn't exist";
}
}
}
HTML:
<form action='' method='POST'>
<input type='text' name='email' placeholder='E-Mail' class='form-email' />
<input type='password' name='password' placeholder='Password' class='form-password' />
<input type='submit' name='sbmit' class='form-submit' />
</form>