[英]password_verify doesn't work, even though it has the hash and the user's password
我正在為我的db
唯一的用戶編寫登錄代碼。 但是password_verify
函數似乎不起作用。 當我同時echo
顯db
的hash
和表單中編寫的password
,我看到了它們,因此查詢或$_POST
沒有問題。
這是我的代碼:登錄:
$passwordFromForm = htmlspecialchars($_POST['password']);
$nmbr = 12; // it's the user's id.
$sql = "SELECT * FROM user WHERE iduser = $nmbr";
$res = mysqli_query($conn, $sql);
// $row = mysqli_fetch_assoc($res);
while($row = $res->fetch_assoc()) {
$hashFromDB = $row['hash'];
}
if(password_verify($passwordFromForm, $hashFromDB)) {
echo "success";
header("Location: ../admin.php");
}
else {
echo "The hash is:" . $hashFromDB . "and the pass is:" . $passwordFromForm;
//this echoes the correct hash and string
}
提前致謝。
該函數password_verify()與password_hash()相關,您可以檢查所使用的算法password_hash()與password_verify()是否相同,並使用password_get_info($ hash)檢查res
在將密碼提供給password_hash()
/ password_verify()
函數之前,請勿對密碼進行任何轉義操作。 因此,請刪除對htmlspecialchars()
的調用,並確保保存哈希的數據庫字段的類型為varchar(255)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.