password_verify 好像不行

password_verify does not seem to work

我对 password_hash 和验证功能完全陌生,但我已经在默认 php 网站上阅读了有关它们的文档。当我使用 password_hash 散列密码时,我在登录时遇到问题。它们已经在数据库中进行了哈希处理。

这是我的代码,用于验证在表单中输入的密码是否与数据库中的哈希匹配(在注册表中使用 password_hash 生成):

    $username = $kunaiDB->real_escape_string($_POST["uname"]);
    $password = $kunaiDB->real_escape_string($_POST["pword"]);

    $kunaiLoginQuery = "SELECT * FROM kunai_users";

    $kunaiLoginQueryResult = $kunaiDB->query($kunaiLoginQuery);
    $controlhash = $kunaiLoginQueryResult->fetch_array();
    $db_pw_res = $controlhash["user_pw"];

    if(password_verify($password, $db_pw_res)) {
        echo "Passwords match!";
    } else { echo "Passwords do not match!"; }

每次登录都失败。我试图寻找类似的解决方案,但到目前为止我还没有找到任何有效的方法。感谢所有帮助:-)

他们在您的 SQL 查询中有误。添加 WHERE 子句。 像这样

SELECT * from table_name WHERE user_name_field = '{$username}'

而不是

$controlhash = $kunaiLoginQueryResult->fetch_array();

输入

$controlhash = $kunaiLoginQueryResult->fetch_assoc();