阻止与数据库中的凭据不匹配的凭据登录


Prevent credentials that do not match those in the database from logging in

我有一个运行良好的注册/登录脚本(我是php新手)。

我遇到了一个问题,任何凭据都可以登录并创建会话,代码没有查看输入的内容,然后检查数据库以查看它们是否正确,我收到了这个错误消息。

警告:mysqli_num_rows()要求参数1为mysqli_result,布尔值在C:''wamp''www''Game''login.php第25行中给定

现在我做了一点研究,发现了一个问题(就在这个网站上),指出我给出的查询返回的是布尔值,而不是结果。这是代码

$query = mysqli_query($con,"select * from users where password='$password' AND    username='$username'");
$rows = mysqli_num_rows($query);

通常,一个正确的答案会给我解决问题的信息,而不必在这里发布,但我不知道如何纠正这一点:(

由于查询失败,

mysqli_query将返回布尔值,很可能是false。最好使用mysqli_error来找出它不起作用的原因,而不显示任何我们甚至无法猜测的代码。

您所做的查询没有结果,所以带有$rows的行=mysqli_num_rows($query);将给你0行,只需测试它是否更大,它们为0样;

if ($rows > 0) {
    //do the magic :)
}

您应该首先检查您的查询是否正在返回某些内容。如果它没有返回某些内容,那么就用其他方式处理它。假设这是的以下方式

if($query === FALSE) {
    die(mysql_error()); //  error handling
}
$rows = mysqli_num_rows($query);