2012-12-28 73 views
1

用戶登錄後,我希望我的所有模型都知道用戶的ID。 (即使他們稍後被調用)。模型中的Codeigniter靜態變量

我想過使用一個靜態變量,但它似乎沒有工作

class Base_model extends CI_Model { 
    static protected $user_id; 
} 

class Log_in_model extends Base_model { 
    public function log_in(){ 
     self::$user_id = 69; 
    } 
} 

class A_model extends Base_model { 
    public function do_A(){ 
     echo self::$user_id; 
    } 
} 

class B_model extends Base_model { 
    public function do_B(){ 
     echo self::$user_id; 
    } 
} 
+1

爲什麼不使用會話ü.. ?? – bipen

回答

0

initailize會議

$this->load->library('session'); 

在用戶登錄後,保存在會話用戶數據的用戶數據

$newdata = array(
       'username' => 'USERNAME', 
       'email'  => 'EMAIL', 
       'user_id' => 'USERID', 
       'logged_in' => TRUE 
      ); 

$this->session->set_userdata('userdetails',$newdata); //setting data in session with a name userdetails 

獲取會話userdata ..

print_r($this->session->userdata('userdetails')); //get userdetails from session 

從會話使用破壞的UserDetails ..

$this->session->unset_userdata('userdetails'); 

如果u想了解更多關於會話然後讀這個..

http://ellislab.com/codeigniter/user-guide/libraries/sessions.html

+0

僅僅基於會話數據讓系統內部的用戶承擔安全風險? –

+1

nope。你可以用$ config ['sess_encrypt_cookie'] \t = TRUE保護它; $ config ['sess_use_database'] \t = TRUE; – TheHorse

+0

@TheHorse說了這一切... :) – bipen