2012-08-23 15 views
1

我散列在建立帳戶密碼,而且它的工作(設置爲VARCHAR密碼(60)),但是當我嘗試這樣做:phpass不工作

$query = $this->CI->db->query("SELECT * FROM users WHERE email = ?", $email); 

    if ($query->num_rows() > 0) { 
     $user_pass = $query->row()->password; 

     $hasher = new PasswordHash(PHPASS_HASH_STRENGTH, PHPASS_HASH_PORTABLE); 

     if ($hasher->CheckPassword($user_pass, $pass)) { 
      return true; 
     } else { 
      return false; 
     } 
    } else { 
     return false; 
    } 

它始終返回false 。任何想法,爲什麼這可能是? (我提供的密碼是正確的)

+0

你真的從數據庫中獲取任何東西嗎? 「SELECT * FROM users WHERE email =?」哪裏的電子郵件等於questionmark?那是你想要的嗎?不要這樣:$ query = $ this-> CI-> db-> query(「SELECT * FROM users WHERE email ='$ email'); – Juw

+0

我使用CodeIgniter的查詢綁定(http:// codeigniter。 com/user_guide/database/queries.html頁面底部) – Sneaksta

+0

你在哪裏定義'$ email'和'$ pass'? – Mudshark

回答

1

我認爲你已經取消了檢查密碼字段。它必須是這樣的:

$hasher->CheckPassword(password which has to be checked, password from database). 

這是有區別的,因爲檢查密碼將散列要檢查的密碼。

+0

是的,它從存儲的密碼哈希中獲取salt和cost參數。 – martinstoeckli