Ceci est une ancienne révision du document !
Sessions CodeIgniter
- Sessions CodeIgniter
Les sessions codeIgniter fonctionnent de la même façon que celles de PHP, excepté qu'elles ne nécessitent pas d'accéder à la configuration du serveur web pour être elles-mêmes configurées. CodeIgniter utilise son propre système de gestion des sessions, soit via les cookies, soit via la base de données.
La bibliothèque session doit être chargée :
- soit automatiquement avec autoload.php :
$autoload['libraries'] = array('session');
- Soit dans le code d'un contrôleur par exemple :
$this->load->library('session');
Identifiant de session
$session_id = $this->session->userdata('session_id');
CodeIgniter sauvegarde en session des informations complémentaires sur le visiteur :
<?php $adresse_ip = $this->session->userdata('ip_address'); $user_agent_du_navigateur = $this->session->userdata('user_agent'); $derniere_visite = $this->session->userdata('last_activity'); ?>
Ajout et récupération de variables
Pour une variable :
$this->set_userdata('nom','value');
Exemple :
<?php $this->session->set_userdata('utilisateur', $user); // ............... $aUser= $this->session->userdata('utilisateur'); echo(aUser->getNom()); ?>
Pour plusieurs variables :
$newdata = array( 'username' => 'johndoe', 'email' => 'johndoe@some-site.com', 'logged_in' => TRUE ); $this->session->set_userdata("user",$newdata);
Suppression de variables
Une variable :
$this->session->unset_userdata('nom');
Plusieurs variables :
$array_items = array('username' => '', 'email' => ''); $this->session->unset_userdata($array_items);
Suppression de la session
$this->session->sess_destroy();
FlashSession
CodeIgniter offre la possibilité d'utiliser des variables de session mémorisées uniquement d'une requête sur l'autre puis ensuite automatiquement détruites.
$this->session->set_flashdata('item', 'value');
Sessions et objets métier
Pour assurer la persistance des objet en session, il est parfois préférable de sur-définir la méthode _sleep de chacun d'entre eux, de façon à définir les membres à sérialiser :
/** * Utilisateur */ class Utilisateur { ... public function __sleep(){ return array('id','login','password','nom','prenom','mail'); } }