簡體   English   中英

即使具有哈希值和用戶密碼,password_verify也不起作用

[英]password_verify doesn't work, even though it has the hash and the user's password

我正在為我的db唯一的用戶編寫登錄代碼。 但是password_verify函數似乎不起作用。 當我同時echodbhash和表單中編寫的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM