Php 如何重置散列的密码?

Php 如何重置散列的密码?,php,Php,使用password\u hash()创建密码很容易,如何重置此密码可能仍然不是一个明确的过程 有没有办法重置散列的密码,或者有没有其他正确的方法 创建密码: $password = $_POST['password']; $hash_password = password_hash($password, PASSWORD_DEFAULT); $sql=("INSERT INTO ..... $new_password = $_POST['new_password']; $hash_new_p

使用
password\u hash()
创建密码很容易,如何重置此密码可能仍然不是一个明确的过程

有没有办法重置散列的密码,或者有没有其他正确的方法

创建密码:

$password = $_POST['password'];
$hash_password = password_hash($password, PASSWORD_DEFAULT);
$sql=("INSERT INTO .....
$new_password = $_POST['new_password'];
$hash_new_password = password_hash($new_password, PASSWORD_DEFAULT);
$sql=("UPDATE .....
重置密码:

$password = $_POST['password'];
$hash_password = password_hash($password, PASSWORD_DEFAULT);
$sql=("INSERT INTO .....
$new_password = $_POST['new_password'];
$hash_new_password = password_hash($new_password, PASSWORD_DEFAULT);
$sql=("UPDATE .....
我相信有东西不见了。请指教

谢谢你的帮助以下是更新后的代码

$pass = $_POST['password'];
$password = password_hash($pass, PASSWORD_DEFAULT);

已编辑

我不确定您是否理解
密码\u hash
的实际用途

是的。这意味着你只能加密它,但不能解密它

以下是一种情况:

1) 当用户注册时,他会设置他的登录名和密码。然后使用
密码\u散列
加密密码并将散列保存到数据库中。

2) 后来他来了,想登录。好的,他写他的密码,你验证密码并用
password\u verify

保存哈希

$test=password\u hash('test',password\u BCRYPT);
变量转储(密码验证('test',$test))

3) 如果用户忘记了密码(如果你的意思是这样的话),你会给他发送一封电子邮件来重置他的密码,然后你会保存一个新的密码散列。(我敢打赌你一定知道这是一个过程。)


尽管如此,如果您不是在处理密码,而是在处理消息,那么您可能希望能够解密某人发送给您的消息。在这种情况下,您需要使用公钥/私钥之类的东西。我发现理解这个理论很有帮助。

什么是重置?我想你的意思是设置一个新密码?是的,你只需要发送一个新密码,或者你发送一个链接,用户可以重置自己的密码。我所说的重置是指更改密码…@DarkBee谢谢你的建议。我真的很感谢你的帮助。似乎当我更改密码时,新密码将被散列
password\u hash()
。在登录时验证新密码时,新密码是错误的。我这里遗漏了一些东西…用你的新尝试更新你的问题谢谢@tomc。我真的很感谢你的帮助。好像当我更改密码时,新密码是
password\u hash()
。验证新密码时,
password\u verify()
新密码错误…我已更新响应。但是,如果您设置了相同的密码,那么您将从
password\u verify
中获得true,感谢您的回复,即使我设置了相同的密码,它也会给出错误的密码…缺少一些内容…当我使用密码创建新用户时,密码的引号如下所示
password\u散列(“$password”,password\u DEFAULT)即使使用
password\u验证(“$password”、$hash\u password)登录没有问题…但是当更改密码时仍然使用单引号,它不起作用。。。非常感谢你。。。我已经从两者中移除,效果很好……我真的很感激。。。。