2012-12-28 31 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