Avec CodeIgniter, la gestion des sessions est très simple. Il suffit de charger la librairie associée qui est ‘session’. Jusque là , je ne pense pas vous apprendre grand chose. Cependant, quand on commence à lire la documentation de CodeIgniter, elle nous dit que:
The Session class stores session information for each user as serialized (and optionally encrypted) data in a cookie
Pour ce qui n’aimerait pas trop l’anglais, CodeIgniter a son propre système de stockage des sessions et utilise les cookies. Cela veut dire que si vous stockez des informations importantes concernant votre utilisateur dans sa session, et bien elles seront sur son poste, ce qui n’est pas génial…
Heureusement, il est possible de restaurer les sessions par défaut, c’est à dire restaurer le bon vieux $_SESSION. Pour cela, nous allons utiliser la librairie ”Native Session”. Il en existe d’autres, cependant elle conserve la même signature de méthode que la librairie originale, ce qui permet un portage assez simple.
Récupérer et déployer la librairie
Première étape, télécharger la librairie : Lien direct vers l’archive
Dans l’archive, vous trouverez une succession de dossier représentant une partie de l’architecture du framework. Un seul fichier est présent, la librairie ! Il faudra la placer au même endroit que dans l’archive.
Configurer notre librairie
Si vous tentez d’utiliser votre nouvelle librairie tout fraîchement déployée, vous allez tomber sur le message d’erreur suivant :
An Error Was Encountered
In order to use the Session class you are required to set an encryption key in your config file.
Comme pour l’utilisation de la librairie fournie par CodeIgniter, il faut mettre une clé de cryptage. Pour cela, rendez vous dans votre dossier d’application, dossier “config > config.php” et modifier les lignes suivantes :
/* |-------------------------------------------------------------------------- | Encryption Key |-------------------------------------------------------------------------- | | If you use the Encryption class or the Session class you | MUST set an encryption key. See the user guide for info. | */ $config['encryption_key'] = 'votre-cle-de-cryptage';
Avec ceci, votre librairie est prête à l’emploi ! Il ne vous reste plus qu’à la charger.
Soit en passant par l’autoload, rendez-vous dans votre dossier d’application “config > autoload.php”
/*
| -------------------------------------------------------------------
| Auto-load Libraries
| -------------------------------------------------------------------
| These are the classes located in the system/libraries folder
| or in your application/libraries folder.
|
| Prototype:
|
| $autoload['libraries'] = array('database', 'session', 'xmlrpc');
*/
$autoload['libraries'] = array('session');Soit en chargeant directement votre librairie dans votre controller :
$this->load->library('session');Conclusion
Avec “Native Session”, vous allez pouvoir restaurer le mécanisme initial des sessions php tout en gardant les avantages fournis par Codeigniter. Il existe d’autres librairies de manipulation des sessions, en voici une liste non exhaustive à cette adresse .
Bon codage à tous !










Une petite question me vient : qu’elle est la justification de CodeIgniter pour traiter les sessions de cette curieuse manière ?
Bonjour, je commence à utiliser en prod CodeIgniter et en fait il vaut mieux utiliser le stockage en BDD,
le cookie alors sert juste d’identifiant, comme avec les sessions PHP classiques.
http://codeigniter.com/user_guide/libraries/sessions.html
@Eric
Comme Kinobi l’a si bien dit, avec CI tu peux utiliser ta BDD pour stocker tes sessions.
Cela a ses avantages (Autologin,traçage,…) et
ses inconvénients ( Passage par la BDD, requêtes supplémentaires , performances.. ).
Mais avant d’en arriver là , cela te permet de stocker bien plus d’informations que dans un cookie, dont la taille est très limitée (4ko).
Autre point important, dans le cas, où des données critiques sont en session, tu ne les laisses pas chez l’utilisateur.
Après, utiliser le système initial de CI peut se suffire à lui même, cela dépend de l’utilisation que tu comptes en faire.
Bon dev !
@Julien
Je me suis mal exprimé : ma question concernait la manière de mettre les données de session dans le cookie !
A part ne pas avoir à charger un fichier à chaque page, je ne vois pas pourquoi CodeIgniter a modifié la manière standard de PHP de gérer les sessions.
@Eric
Ah désolé :)
Sur la documentation, ils mettent que c’est pour plus de flexibilité pour les développeurs…
http://codeigniter.com/user_guide/libraries/sessions.html
Après est-ce pour autant plus flexible…
Question à creuser !