由于某些原因,我的PHP登录脚本不断返回“无效的电子邮件/密码组合”,但我知道我输入了正确的电子邮件和密码。有谁看到我可能做错了什么?
<?php
$email= $_POST['email'];
$password= $_POST['password'];
if (!empty($email) && !empty($password)) {
$connect= mysqli_connect("localhost", "root", "", "si") or die('error connecting with the database');
$query= "SELECT user_id, email, password FROM users WHERE email='$email' AND
password='$password'";
$result= mysqli_query($connect, $query) or die('error with query');
if (mysqli_num_rows($result) == 1) {
$row= mysqli_fetch_array($result);
setcookie('user_id', $row['user_id']);
echo "you are now logged in";
} else {
echo "invalid username/password combination";
}
} else {
echo" you must fill out both username and password";
}
?>
答案 0 :(得分:2)
我会把它换成说,
if (mysqli_num_rows($result) > 0)
但除此之外,代码看起来应该可以工作。你确定$ _POST变量包含你认为应该包含的内容吗?您确定数据库中存在此用户/通行证组合吗?
答案 1 :(得分:2)
您的代码看起来很好。我会检查以下内容:
确保查询正常运行。我会回显查询并在您的数据库程序中的数据库上运行它,看看结果是什么。
确保您拥有该电子邮件/密码组合的用户不超过1个 - 这会使您的计数检查无效。
检查发布的详细信息,确保它们与数据库中的内容一致(没有杂散的空格等)。
最后,您最好正确缩进并布置代码,看看在这里阅读的容易程度:http://codepad.org/DmtMuTpC
答案 2 :(得分:1)
当mysqli_num_rows ( $result )
不等于1
时,您会关注...我认为您应该做的是验证username
和password
是否直接存在于invalid username/password combination
数据库.....这是您的脚本中唯一合理的原因,您应该获得{{1}}
如果您还有其他问题,请告诉我
答案 3 :(得分:0)
出现错误是因为数据库中存在重复数据。