gpt4 book ai didi

php - 密码更改代码错误

转载 作者:搜寻专家 更新时间:2023-10-31 21:28:22 25 4
gpt4 key购买 nike

我正在使用 password_hash 函数,它在注册表单和登录表单中运行良好,但在更改密码表单时不起作用,它给我错误消息不正确的旧密码可能是我的代码出错了或者可能是因为 password_hash 每次使用相同的输入都会生成不同的字符集,如果是这样,使用什么方法更新密码。使用 md5 可以使用相同的代码。

if(isset($_POST['senddata'])){
$old_password = $_POST['oldpassword'];
$new_password = $_POST['newpassword'];
$repeat_password = $_POST['newpassword2'];

$query = $db->prepare("SELECT * FROM users WHERE username=:username");
$query->execute(array(':username'=>$username));
$row = $query->fetch(PDO::FETCH_ASSOC);
$db_password=$row['password'];
// hash old password before match
$old_password = password_hash($old_password, PASSWORD_DEFAULT);
// check if old password equals db_password
if ($old_password==$db_password) {
// continue changing users password
if ($new_password==$repeat_password) {
// hash the new password
$new_password=password_hash($new_password, PASSWORD_DEFAULT);
$repeat_password=password_hash($repeat_password, PASSWORD_DEFAULT);
// update password
$password_update_query=$db->prepare("UPDATE userss SET password=:password, password2=:password2 WHERE username=:username");
$password_update_query->execute(array(':password'=>$new_password,':password2'=>$repeat_password2,':username'=>$username));
echo "Your Password Updated";
}
} else {
echo "Old password is incorrect";
}
}

最佳答案

您需要使用 password_verify($password, $hash);用于验证密码是否相等

当您再次对它进行哈希处理时,您会得到另一个结果,因为它会生成一个新的盐,然后会产生另一个哈希值。

类似于:

$old_password = $_POST['oldpassword'];
$db_password = $row['password']; // which should be already hashed
if (password_verify($old_password, $db_password) {

关于php - 密码更改代码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33038092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com