2015-09-17 70 views
-1

我打算使用password_hashpassword_verify函數來安全地存儲密碼。PHP 5.5 Password_Verify在從數據庫提取數據時不工作

當我使用下面的一個。這工作

$hash = password_hash('test',PASSWORD_DEFAULT); 
$state= password_verify('test',$hash); 

if($state){ 
    echo "OK"; 
} 
else{ 
    echo "No!"; 
} 

但是,當我嘗試寫入密碼到數據庫並從中獲取它。它不起作用。

$Pass= password_hash($pass,PASSWORD_DEFAULT); 
$query= "INSERT INTO user(email, password) VALUES('$Email','$Pass')"; 
mysqli_query($link,$query); 

$query= "SELECT password FROM user WHERE email='[email protected]'"; 
if($result=mysqli_query($link,$query)){ 
     $Array=mysqli_fetch_array($result); 
     $isComplete=password_verify($pass,$Array[1]); 
     if($isComplete){ 
       echo "OK!" 
     }else{ 
       echo "Not OK!"; 
     } 
} 

這就是我的列

enter image description here

+2

請張貼從數據庫中獲取密碼的代碼,也 – dimlucas

+0

我加入數據庫代碼 –

回答

1

的密碼是在$Array[1]$Array[0]沒有。

但你絕對應該使用Prepared Statements,以確保從潛在的SQL注入攻擊你的應用程序

+0

感謝貢獻@dimlucas但問題是不是關於它。我打印了數組[1],密碼就在那裏。 –

+0

然後嘗試將數據庫的排序規則更改爲'utf8_general_ci' – dimlucas