為什麼Password_Verify()函數不驗證雜湊密碼?

Patricia Arquette
發布: 2024-10-21 07:07:30
原創
999 人瀏覽過

Why is the Password_Verify() Function Not Verifying Hashed Passwords?

PHP的password_hash()、password_verify()

在你的註冊腳本中,你使用PHP的password_hash()函數來加密使用者密碼並將其儲存在資料庫中。當使用者嘗試登入時,您將使用password_verify() 將輸入的密碼與資料庫中的雜湊版本進行比較。但是,密碼不匹配,表示您的 password_verify() 呼叫有問題。

password_verify() 用法

password_verify() 採用兩個參數:

  • $password:使用者登入時輸入的明文密碼。
  • $hash:儲存在資料庫中的雜湊密碼。

它將純文字密碼與雜湊版本進行比較,如果匹配則傳回 true,如果不匹配則傳回 false。

您的程式碼問題

在您的登入腳本中,您將純文字密碼($pwd) 和雜湊密碼($password) 傳遞給password_verify():

if(($user_id == $p_num) && (password_verify($pwd, $password))){
登入後複製
登入後複製

但是,您也使用var_dump() 在比較,這可以改變它們的值。 var_dump() 輸出顯示純文字密碼 ($pwd) 被修改為“1”,而雜湊密碼 ($password) 保持與資料庫中儲存的相同。

正確用法

要解決此問題,請從程式碼中刪除 var_dump() 調用,並確保 $pwd 包含使用者在登入期間輸入的純文字密碼。您的登入代碼應如下所示:

if(($user_id == $p_num) && (password_verify($pwd, $password))){
登入後複製
登入後複製

以上是為什麼Password_Verify()函數不驗證雜湊密碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板