2012-12-28 4 views
1

Une fois qu'un utilisateur s'est connecté, je souhaite que tous mes modèles connaissent l'identifiant de l'utilisateur. (Même s'ils sont appelés plus tard).Variables statiques Codeigniter dans le modèle

Je pensais à l'aide d'une variable statique mais il ne semble pas fonctionner

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

pourquoi ne u .. utilise la session . ?? – bipen

Répondre

0

session initailize

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

après connexion d'un utilisateur, enregistrez le userdata en session userdata

$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 

obtenir les données d'utilisateur de session ..

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

pour détruire userdetails de l'utilisation de la session ..

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

si tu veux en savoir plus sur la session, puis lire ..

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

+0

n'est-ce pas un risque de sécurité de laisser un utilisateur à l'intérieur du système uniquement en fonction des données de session? –

+1

non. Vous pouvez le protéger avec $ config ['sess_encrypt_cookie'] \t = TRUE; $ config ['sess_use_database'] \t = VRAI; – TheHorse

+0

@TheHorse a dit tout ... :) – bipen