我对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!"; }
每当我登录它失败。我试图寻找类似的解决方案,但到目前为止我还没有发现任何有效的方法。所有帮助表示赞赏: - )
答案 0 :(得分:0)
他们的SQL查询错误。添加WHERE
子句。
像这样的东西
SELECT * from table_name WHERE user_name_field = '{$username}'
而不是
$controlhash = $kunaiLoginQueryResult->fetch_array();
输入
$controlhash = $kunaiLoginQueryResult->fetch_assoc();