使用 password_hash 更新旧密码时出错
Error Updating Old Password with with password_hash
我用新密码更新旧密码时遇到问题 password_hash,它总是说旧密码错误。
table: 派佳外
字段:nokom、nama、uol1
这是我的代码:
<?php session_start();
require "config.php";
$nokom = $_POST['nokom'];
$pswlama = password_hash($_POST['pswlama'], PASSWORD_DEFAULT);
$pswbaru = password_hash($_POST['pswbaru'], PASSWORD_DEFAULT);
$cari = "SELECT * FROM pegawai WHERE nokom ='".$nokom."'";
$result = mysqli_query($conn,$cari);
if (mysqli_num_rows($result) > 0)
{
while ($data = mysqli_fetch_array($result))
{
if(password_verify($pswlama, $data['uol1']))
{
$perintah = "UPDATE pegawai SET uol1 = '$pswbaru' WHERE nokom = '$nokom' ";
if (mysqli_query($conn, $perintah))
{
echo "<script>alert('Success');location.replace('home.php')</script>";
}
else
{
echo "Error updating record: " . mysqli_error($conn);
}
}
else
{
echo "<li>Old password is wrong!</li>";
}
}
}
else
{
echo "Data not found";
}
?>
任何帮助都会很棒,谢谢。
您在 password_verify 的两个参数中都添加了散列。阅读 password_verify 的手册,您会发现第一个参数不应该是散列,而是密码本身,用于与存储在数据库中的散列密码(参数 2)进行比较。
您在将密码传递给 password_verify 之前对密码进行哈希处理:
$pswlama = password_hash($_POST['pswlama'], PASSWORD_DEFAULT);
...
if(password_verify($pswlama, $data['uol1']))
您应该将 $_POST['pswlama']
直接传递给 password_verify。
改变这个
$pswlama = password_hash($_POST['pswlama'], PASSWORD_DEFAULT);
到此。 password_verify 将处理其余部分。
$pswlama = $_POST['pswlama'];
保持其余代码不变。
我用新密码更新旧密码时遇到问题 password_hash,它总是说旧密码错误。
table: 派佳外
字段:nokom、nama、uol1
这是我的代码:
<?php session_start();
require "config.php";
$nokom = $_POST['nokom'];
$pswlama = password_hash($_POST['pswlama'], PASSWORD_DEFAULT);
$pswbaru = password_hash($_POST['pswbaru'], PASSWORD_DEFAULT);
$cari = "SELECT * FROM pegawai WHERE nokom ='".$nokom."'";
$result = mysqli_query($conn,$cari);
if (mysqli_num_rows($result) > 0)
{
while ($data = mysqli_fetch_array($result))
{
if(password_verify($pswlama, $data['uol1']))
{
$perintah = "UPDATE pegawai SET uol1 = '$pswbaru' WHERE nokom = '$nokom' ";
if (mysqli_query($conn, $perintah))
{
echo "<script>alert('Success');location.replace('home.php')</script>";
}
else
{
echo "Error updating record: " . mysqli_error($conn);
}
}
else
{
echo "<li>Old password is wrong!</li>";
}
}
}
else
{
echo "Data not found";
}
?>
任何帮助都会很棒,谢谢。
您在 password_verify 的两个参数中都添加了散列。阅读 password_verify 的手册,您会发现第一个参数不应该是散列,而是密码本身,用于与存储在数据库中的散列密码(参数 2)进行比较。
您在将密码传递给 password_verify 之前对密码进行哈希处理:
$pswlama = password_hash($_POST['pswlama'], PASSWORD_DEFAULT);
...
if(password_verify($pswlama, $data['uol1']))
您应该将 $_POST['pswlama']
直接传递给 password_verify。
改变这个
$pswlama = password_hash($_POST['pswlama'], PASSWORD_DEFAULT);
到此。 password_verify 将处理其余部分。
$pswlama = $_POST['pswlama'];
保持其余代码不变。