PHP登录脚本不工作(mysqli_num_rows?)

PHP登录脚本不工作(mysqli_num_rows?),php,mysqli,Php,Mysqli,我正在编写自己的登录脚本,我很笨,所以我无法理解这一点。我甚至复制了另一个脚本,但仍然不起作用。我真的不明白到底出了什么问题,但它总是返回不正确的用户名和密码!即使我输入了确切的信息。我甚至设置了密码,这样它在登录时就不会对密码进行散列,我必须将散列输入密码表单,该表单没有返回错误,但没有让我登录 <?php include('session.php'); // Get the strings ready for checking $username = prepare($_POST['

我正在编写自己的登录脚本,我很笨,所以我无法理解这一点。我甚至复制了另一个脚本,但仍然不起作用。我真的不明白到底出了什么问题,但它总是返回不正确的用户名和密码!即使我输入了确切的信息。我甚至设置了密码,这样它在登录时就不会对密码进行散列,我必须将散列输入密码表单,该表单没有返回错误,但没有让我登录

<?php
include('session.php');

// Get the strings ready for checking
$username = prepare($_POST['username']); // Get the entered name
$password = prepare($_POST['password']); // Get the entered password
$usernamereal = getuserdata($username, 'username'); // Get the real name so the salt works
$salt = hash("sha256", $usernamereal.$password); // salted password

// Attempt to login
$query = query("SELECT * FROM users WHERE username='$username' AND password='".hash("sha256", $usernamereal.$password)."'");
if(mysqli_num_rows($query) == 1){ // The attempt is successful!
    $_SESSION['username'] == getuserdata($username, 'username');
    query("UPDATE users SET token = ".gentoken()." WHERE username = '".$_SESSION['username']."'");
    if($_POST['rememberme']){
        setcookie("username", $_SESSION['username'], time()+COOKIE_EXPIRE, COOKIE_LOC);
        setcookie("hash", getdata(hash), time()+COOKIE_EXPIRE, COOKIE_LOC);
    }
    header('Location: index.php');
    exit;
}else{ // Something went wrong when the user entered their details
    $_SESSION['login_error'] = "Wrong username or password!";
    $_SESSION['attempt_name'] == $username;
    header('Location: index.php');
} 
?>
注意:query、prepare、getdata和getuserdata是预定义的字符串。我试过了

<?php die(mysqli_num_rows($query)); ?>
…然后返回一个空白屏幕


这是怎么回事?我甚至把它们换成测试==0,结果也一样。

我终于得到了它!我将密码列设置为20。我忘了把它改成64。哎呀。

我看不到正在建立数据库连接。这是否在session.php中?能否尝试将查询保存为变量->$qry=SELECT*,从username='$username'和password='的用户处进行。hashsha256,$usernamereal.$password.'然后将其回显并直接在mysql中尝试,以查看查询是否有效/返回一行。@即使密码完全匹配,也不返回任何行…当使用die打印整数时,当结果为0时,通常不会得到输出。尝试将其用作字符串:die。mysqli_num_rows$query;数据库中的用户名或密码是否有您没有注意到的前导/尾随空格?您可以尝试从trimusername='$username'和trimpassword='.hashsha256,$usernamereal.$password'的用户中使用trim->SELECT*进行验证。