php:从数据库中检索哈希密码并将其保存到数据库中

bvhaajcl  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(373)

我使用以下代码保存用户信息:

$hashed = password_hash($password, PASSWORD_DEFAULT);

接下来是我的insert查询,如下所示:

INSERT INTO users (username, password) VALUES ('$username', '$hashed');

当我用普通的select语句检索密码并将密码的值传递给输入类型的密码时,textbox将以散列形式显示密码。然后我只对用户名进行更改,并更新为:

UPDATE users SET username = '$username', password = '$hashed' WHERE id = 1;

对已经散列的密码进行重新散列,从而对原始密码进行更改。这会导致用户无法登录。有什么帮助吗?

2nc8po8w

2nc8po8w1#

那就不要更新密码栏了!你的问题就解决了。或者,如果您必须用以前的散列密码更新它,请查询以前的散列密码并将其存储到一个未触及的变量中。然后只需查询更新。

rryofs0p

rryofs0p2#

不在密码输入中打印来自数据库的散列密码。只要打印用户名,如果保存了新的用户数据,就可以检查用户是否在输入中设置了任何密码。如果是,则: UPDATE users SET username=...,password=... WHERE ... . 如果没有设置密码,则在没有密码部分的情况下执行相同的查询。
如果你真的很喜欢你现在的代码,那么在执行update语句之前检查一下密码是否和旧的散列密码一样。如果是,则转到不带密码部分的更新查询,如果不是,则转到旧查询。

相关问题