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();
我对 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();