Статические переменные 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
добавлено отредактировано
Просмотры: 1
de
почему вы не используете сеанс ... ??
добавлено автор bipen, источник

1 ответы

начать сеанс

$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 

получить пользовательские данные сессии ..

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

уничтожить пользовательские данные из сеанса.

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

если вы хотите больше узнать о сессии, тогда прочитайте это.

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

0
добавлено
разве это не угроза безопасности, чтобы позволить пользователю внутри системы только на основе данных сеанса?
добавлено автор gilad s, источник
ОК спасибо вам, ребята
добавлено автор gilad s, источник
@ TheHorse сказал все это ... :)
добавлено автор bipen, источник
Неа. Вы можете защитить его с помощью $ config ['sess_encrypt_cookie'] = TRUE; $ config ['sess_use_database'] = TRUE;
добавлено автор TheHorse, источник