2014-03-05 51 views
0

我有問題登錄一個user.I在database.Now md5方法保存在加密的密碼時,我想選擇使用加密密碼錶單數據庫中的用戶返回null。從數據庫中選擇加密密碼笨

這是我的代碼:

控制器:

function login(){ 
    $username=$this->input->post('username'); 
    $password=$this->input->post('password'); 
    $user=$this->mymodel->login($username,$password); 
    if($user) 
     $this->load->view('home'); 
    else 
     echo "The user name or password is wrong"; 
} 

型號:

function login($username,$password){ 
    $where=array('username'=>$username,'password'=>md5($password)); 
    $this->db->select()->from('user')->where($where); 
    $query=$this->db->get(); 
    return $query->first_row('array'); 
} 

但此查詢返回null;

+0

'$這個 - > DB->獲得()'將是一個函數的調用。該代碼中還有一個語法錯誤。在first_row()後面有一個額外的右括號和撇號。 – BrightIntelDusk

+0

用於在codeigniter中調試查詢的一些非常有用的東西是'echo $ this-> db-> last_query();' – BrightIntelDusk

+0

@ IntegrityFirst.sorry這些錯誤來自我在這裏輸入的內容,而不是我工作的代碼,現在我糾正它。 – setara

回答

1

從看你的代碼,我注意到您不必在選擇功能指定的任何行。您可以在星號通「*」代表從數據庫表中獲取所有行。此外,您的where子句可以分成兩個單獨的行。所有行函數的最後一個可用於獲取查詢結果的第一行。

型號代碼:

function login($username, $password 
{ 

    $this->db->select('*') 
      ->from('user') 
      ->where('username', md5(username)) 
      ->where('password', md5($password)); 

    $query = $this->db->get(); 
    return $query->row(); 
} 

我也使用MD5來存儲密碼你泄氣。 PHP有更強大的加密方法。另外它在數據庫中存儲時,它使用鹽漬密碼一個很好的做法。 欲瞭解更多信息,請參閱How do you securely store a user's password and salt in MySQL?

你可以找到更多關於如何在the codeigniter manual中使用codeigniters活動記錄類的信息。