2017-09-21 61 views
-7

在我的登錄頁面中,我收到password_verify後的錯誤,如果我使用hash_equals驗證密碼。需要知道原因。爲什麼hash_equals和password_verify無法正常工作?

第二個問題是每次我通過更改密碼頁更改密碼hash_equals不驗證密碼。下面是

if (!password_verify($password, $user['password'])) { 
    $errors[]='Password does not match'; 
} 

if (!hash_equals($password, $user['password'])) { 
    $errors[]='Password does not match'; 
} 
+2

您是否閱讀過關於這兩個函數的手冊? – Mjh

回答

0

功能hash_equals()並不意味着驗證與哈希密碼的代碼,這就是password_verify()函數的工作,所以不要在你的代碼中使用hash_equals():

// Hash a new password for storing in the database. 
// The function automatically generates a cryptographically safe salt. 
$hashToStoreInDb = password_hash($_POST['password'], PASSWORD_DEFAULT); 

// Check if the hash of the entered login password, matches the stored hash. 
// The salt and the cost factor will be extracted from $existingHashFromDb. 
$isPasswordCorrect = password_verify($_POST['password'], $existingHashFromDb); 
相關問題