2014-12-27 105 views
1

我的電腦上有PHP 5.4版本,所以我不能使用password_hash(),我用crypt()來代替。PHP 5.4同時檢查密碼驗證

但接下來的問題是如何驗證密碼,如果他們匹配?

PHP文檔說如果使用crypt()作爲密碼versifier的最佳方式是hash_equals()但只有PHP 5.5。

我總是得到:

Fatal error: Call to undefined function hash_equals() in...

回答

2

正如你所提到的PHP 5.4沒有這個功能呢,所以你有兩個選擇,以充分利用這個非常有用的功能:

更好的方法:

更新到PHP 5.5/5.6,並使用當時的機庫

如果這是不可能的:

你可以使用這個庫:

https://github.com/ircmaxell/password_compat

該程序庫提供的功能正爲PHP 5.5 password_ *向前兼容性。

2

你可以只比較他們兩個這樣的:

<?php 
$the_password= crypt('12345', 'aasddas'); 
$user_entered_pass='125'; 
if(crypt($user_entered_pass,'aasddas') == $the_password){ 
    echo "right"; 
}else{ 
    echo "wrong"; 
} 
?> 
0

簡短的回答是,是什麼password_compat是,所以用它。

The PHP documentation said that if you use crypt() the best way to use as password versifier is hash_equals() but only PHP 5.5.

  1. 如果你理智如下建議,那麼你就沒有使用crypt(),你使用password_hash()password_verify()
  2. hash_equals()在PHP 5.6中添加,而不是5.5。