首頁 >後端開發 >php教程 >儘管憑證正確,為什麼 PHP 的 `password_verify()` 回傳 False?

儘管憑證正確,為什麼 PHP 的 `password_verify()` 回傳 False?

DDD
DDD原創
2024-12-03 20:19:16807瀏覽

Why Does PHP's `password_verify()` Return False Despite Correct Credentials?

Password_verify 總是會傳回 False

PHP 5.5 的使用者偶爾會遇到來自password_verify() 函數的意外錯誤回傳值。

問題

考慮以下程式碼snippet:

// get result row (as an object)
$result_row = $result_of_login_check->fetch_object();

// using PHP 5.5's password_verify() function to check if the provided password fits
// the hash of that user's password
if (password_verify($_POST['user_password'], $result_row->user_password_hash)) {
    // ...
}

儘管驗證了$_POST['user_password'] 和$result_row->user_password_hash 值是否正確,password_verify()仍然回傳false。

解決方案

該問題通常是由於列長度不足以在資料庫中儲存雜湊密碼而引起的。 PHP 手冊建議使用容量至少為 255 個字元的列,因為雜湊密碼的長度可能超過 60 個字元。

要解決此問題,請確保用於儲存雜湊密碼的資料庫列具有足夠的長度。將列定義更新為 255 或更長的長度應該可以解決該問題並允許 password_verify() 正常運作。

以上是儘管憑證正確,為什麼 PHP 的 `password_verify()` 回傳 False?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn