2015-10-22 78 views
0

我使用password_hash函數作爲用戶註冊的一部分插入散列到數據庫中。這效果很好,並在數據庫中創建密碼哈希。但是,我無法使用password_verify驗證密碼,並且檢查總是返回false。例如:Password_verify不適用於mysql

$hash = password_hash("rattle",PASSWORD_DEFAULT) 

    returns `$hash = $2y$10$fonFqdioDtfJ/Gp7t4orWOdalMHkKQSA8PrFvbgI7LC0LCvYshZ.i` 

這已成功插入到數據庫中。但是,password_verify('rattle',$hash)始終返回false。我試圖在將哈希插入到數據庫中並將其用作哈希值之前嘗試回顯哈希,但仍然沒有快樂。數據庫散列字段設置爲60個字符。

任何幫助將不勝感激。

回答

0

經過測試,適用於保存的字符串和動態。總是60個字符。

$hash = password_hash("rattle",PASSWORD_DEFAULT); 
$hashCheckSaved = password_verify("rattle", '$2y$10$KDIzEQjsmlHCP0mjixbBoe9yJE8tY4aNPOZegiwez1zUPkt5217M2'); 
$hashCheckDynamic = password_verify("rattle", $hash); 
echo $hash."<br> saved(". $hashCheckSaved . ") dynamic(". $hashCheckDynamic.")"; 
echo "<br>"; 
echo strlen($hash) . " chars in this string"; 
+0

謝謝,但不應$ hashCheckSaved = password_verify( 「咣」, '$ 2Y $ 10 $ fonFqdioDtfJ/Gp7t4orWOdalMHkKQSA8PrFvbgI7LC0LCvYshZ.i'),使用數據庫中保存的哈希?這總是返回false。 – mikeyh

+0

hashcheckSaved正在模擬來自db的散列。確保你正在包裝單引號。 – Conceptz