在你的註冊腳本中,你使用PHP的password_hash()函數來加密使用者密碼並將其儲存在資料庫中。當使用者嘗試登入時,您將使用password_verify() 將輸入的密碼與資料庫中的雜湊版本進行比較。但是,密碼不匹配,表示您的 password_verify() 呼叫有問題。
password_verify() 採用兩個參數:
它將純文字密碼與雜湊版本進行比較,如果匹配則傳回 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中文網其他相關文章!