-2

我正在尝试构建一个带有密码输入的表单。我正在尝试通过散列密码php password_hash并将其保存在数据库中。当用户登录时,我将对他的输入进行哈希处理并检查它是否与数据库中的相同。

问题是当我使用 password_hash 时,每次刷新时它都会给我一个随机输出。输入仍然相同。这使得用户无法登录,因为输出哈希永远不会匹配数据库中的内容。

我正在这样测试它:

$pw = "hello";
echo password_hash ($pw, PASSWORD_DEFAULT);

the first echo = $2y$10$7GwPLFNIhybl6tcyuYsH..Dtgfn2hF7RUDwZ99o7BkL6eza4Dsope;
echo again = $2y$10$7tvaZHupw8Ik8Id/ImHCHekpp/Deg4E.XkG82zaVYx262Exv3zMde;

我做错了吗?请帮助

4

1 回答 1

2

是的。你做错了什么。

预计每次请求都会更改hash 这就是目的。

您需要做的是针对该哈希验证密码。

if(password_verify($password, $hash)){
    //correct
}

不要尝试在每次页面加载时比较哈希值。

于 2015-12-25T16:59:48.923 回答