2011-10-02 164 views
1
我有麻煩

,得到了記錄在從數據庫中的用戶ID ...如何在會話(CodeIgniter)上設置已登錄的用戶ID?

這是我的控制器代碼:

 function validation(){ 

    $this->load->model('users_model'); 
    $query = $this->users_model->validate(); 

    if ($query){ 
     $this->users_model->get_userID($this->input->post('email')); 
     $data = array( 
     'email' => $this->input->post('email'), 
     'is_logged_in' => true, 
     'user_id' => $user_id 
     ); 

     $this->session->set_userdata($data);    
     redirect('home'); 
    } 
    else { 
     $this->index(); 
    } 
} 

這是我的模型功能,我從數據庫返回的用戶ID :

 function get_userID($email){ 
    $this->db->where('email',$email); 
    $query = $this->db->get('users');  
    foreach ($query->result() as $row) 
     { 
      $user_id = $row->id; 
     } 
     return $user_id; 

} 

一切工作完美,除了$ user_id返回空......我做錯了什麼?

回答

4

嘗試:

$user_id= $this->users_model->get_userID($this->input->post('email')); 
+0

這樣一個簡單的解決,非常感謝! –

+0

歡迎來到Stackoverflow! –

+0

@Rick Rhodes您應該接受問題。請在他的答案下找到灰色的勾號並點擊它。它應該是綠色的。如果您不立刻將答案標記爲正確,您將無法在此處詢問問題。 – Tareq

0

嘗試修改模型功能,這一點 -

function get_userID($email){ 
    $this->db->where('email',$email); 
    $query = $this->db->get('users')->row_array(); // retrieves only first-row. 
    return $query['id']; 
} 

在控制器的功能需要修改的只是有點如下 -

function validation(){ 

    $this->load->model('users_model'); 
    $query = $this->users_model->validate(); 

    if($query){ 
     //$user_id was not assigned before :) 
     $user_id = $this->users_model->get_userID($this->input->post('email')); 
     $data = array( 
     'email' => $this->input->post('email'), 
     'is_logged_in' => true, 
     'user_id' => $user_id 
     ); 

     $this->session->set_userdata($data);    
     redirect('home'); 
    } 
    else { 
     $this->index(); 
    } 
} 

希望它有幫助,

費薩爾·艾哈邁德· blog/site

+0

順便再看一遍你的代碼,你還應該檢查validate()函數,因爲如果它沒有返回TRUE,模型函數將永遠不會被訪問。 – thephpx