En tant que développeur CodeIgniter, il est très important que vous compreniez comment utiliser la bibliothèque de sessions principale. Bien sûr, vous pouvez toujours utiliser la valeur par défaut $ _SESSION
la syntaxe, mais il est toujours recommandé d'utiliser le wrapper à la place.
Commençons par le chargement d'une bibliothèque de session, puis passons à la discussion sur la façon d'ajouter, de récupérer, de supprimer et de détruire des variables de session. Dans le dernier segment, nous examinerons les différents pilotes de session intégrés à votre disposition fournis par le cadre CodeIgniter lui-même..
Si vous souhaitez utiliser des sessions dans CodeIgniter, la première chose dont vous aurez besoin est une bibliothèque de sessions intégrée. Sauf si et jusqu'à ce que vous développiez une application Web ne nécessitant aucune session, vous ne devriez pas vous occuper de la bibliothèque de sessions. Bien que ce ne soit pas le cas la plupart du temps, vous pouvez charger automatiquement la bibliothèque de sessions dans CodeIgniter afin qu'elle active les fonctionnalités de traitement de session pour chaque requête Web..
Allez-y et ouvrez le fichier situé à application / config / autoload.php
. Trouvez la section suivante.
/ * | -------------------------------------------------- ----------------- | Bibliothèques à chargement automatique | -------------------------------------------------- ----------------- | Ce sont les classes situées dans system / libraries / ou your | application / libraries /, avec l'ajout du répertoire | bibliothèque 'base de données', ce qui est un cas particulier. | | Prototype: | | $ autoload ['libraries'] = array ('base de données', 'email', 'session'); | | Vous pouvez également fournir un autre nom de bibliothèque à attribuer | dans le contrôleur: | | $ autoload ['libraries'] = array ('user_agent' => 'ua'); * / $ autoload ['libraries'] = array ();
le $ autoload ['libraries']
array contient la liste des bibliothèques à charger automatiquement. Selon nos besoins, changeons-le pour qu'il ressemble à ceci:
$ autoload ['libraries'] = array ('session');
En outre, il existe un autre moyen d’y parvenir. Vous pouvez utiliser le code suivant quelque part dans votre fichier de contrôleur pour charger la bibliothèque de session..
$ this-> load-> library ('session');
C'est à peu près tout ce qui concerne l'initialisation de la bibliothèque de session.
Dans les sections suivantes, nous allons passer en revue les différentes opérations que vous pouvez effectuer avec la bibliothèque de session principale. Pour le démontrer, nous allons construire un exemple de fichier de contrôleur qui charge la bibliothèque de session et fournit des méthodes qui seront décrites tout au long de cet article..
Allez-y et créez un fichier application / controllers / Example.php
avec le contenu suivant.
chargement-> bibliothèque ('session'); // charge url helper $ this-> load-> helper ('url'); public function index () / **** SET SESSION DATA **** / // définition d'un seul élément dans la session $ this-> session-> set_userdata ('favourite_website', 'http://tutsplus.com') ; // set array of items in session $ arraydata = array ('author_name' => 'Sajal Soni', 'website' => 'http://code.tutsplus.com', 'twitter_id' => '@sajalsoni', 'intérêts' => array ('tennis', 'travelling')); $ this-> session-> set_userdata ($ arraydata); / **** GET SESSION DATA **** / // récupère les données de la session echo "Favorite Website:". $ this-> session-> userdata ('favourite_website'); écho "
"; echo" Nom de l'auteur: ". $ this-> session-> userdata ('author_name'); echo"
"; echo" Intérêt (exemple de tableau): ". $ this-> session-> userdata ('interest') [0]; echo"
"; // récupère tout ce qui est stocké dans la session en même temps'; print_r ($ this-> session-> userdata ()); / **** REMOVE SESSION DATA **** / // clé non définie de la session $ this-> session-> unset_userdata ('favourite_website'); // désélectionne plusieurs éléments à la fois $ keys = array ('twitter_id', 'interest'); $ this-> session-> unset_userdata ($ clés); écho ''; print_r ($ this-> session-> userdata ()); public function setflash () // définir les données flash $ this-> session-> set_flashdata ('flash_welcome', 'Hey, bienvenue sur le site!'); // marque les données existantes comme données flash $ this-> session-> set_userdata ('flash_message', 'Je suis un message flash!'); $ this-> session-> mark_as_flash ('flash_message'); redirect ('exemple / getflash'); fonction publique getflash () // récupère les données flash echo "Message d'accueil Flash:". $ this-> session-> flashdata ('flash_welcome'); écho ''; print_r ($ this-> session-> flashdata ()); public function tempdata () // définir les données temporaires $ this-> session-> set_tempdata ('coupon_code', 'XYEceQ!', 300); // marque les données existantes en tant que données temporaires $ this-> session-> set_userdata ('coupon_code', 'XYEceQ!'); $ this-> session-> mark_as_temp ('coupon_code', 300); // récupère les données temp echo $ this-> session-> tempdata ('coupon_code'); fonction publique destroy () $ this-> session-> set_userdata ('favourite_website', 'http://tutsplus.com'); // destory session $ this-> session-> sess_destroy ();C'est un fichier de contrôleur très basique avec lequel vous devriez être familiarisé en tant que développeur CodeIgniter. Nous sommes maintenant prêts à passer aux sections suivantes qui donnent un aperçu des concepts de gestion de session..
Comment ajouter, récupérer et supprimer des données de session
Pour commencer, récupérons le code de notre
__construction
méthode.fonction publique __construct () parent :: __ construct (); // charge la bibliothèque de session $ this-> load-> library ('session'); // charge url helper $ this-> load-> helper ('url');Juste au cas où vous n'avez pas autoloadé la bibliothèque de session, cela le fera en premier lieu. En dehors de cela, nous avons également chargé le
url
aide qui nous permet d'utiliser certaines méthodes utilitaires que nous verrons plus tard.Ensuite, prenez le code de la
indice
méthode.fonction publique index () / **** SET SESSION DATA **** / // élément unique dans la session $ this-> session-> set_userdata ('favourite_website', 'http://tutsplus.com'); // set array of items in session $ arraydata = array ('author_name' => 'Sajal Soni', 'website' => 'http://code.tutsplus.com', 'twitter_id' => '@sajalsoni', 'intérêts' => array ('tennis', 'travelling')); $ this-> session-> set_userdata ($ arraydata); / **** GET SESSION DATA **** / // récupère les données de la session echo "Favorite Website:". $ this-> session-> userdata ('favourite_website'); écho "
"; echo" Nom de l'auteur: ". $ this-> session-> userdata ('author_name'); echo"
"; echo" Intérêt (exemple de tableau): ". $ this-> session-> userdata ('interest') [0]; echo"
"; // récupère tout ce qui est stocké dans la session en même temps'; print_r ($ this-> session-> userdata ()); / **** REMOVE SESSION DATA **** / // clé non définie de la session $ this-> session-> unset_userdata ('favourite_website'); // désélectionne plusieurs éléments à la fois $ keys = array ('twitter_id', 'interest'); $ this-> session-> unset_userdata ($ clés); écho ''; print_r ($ this-> session-> userdata ());Comme vous avez déjà chargé la bibliothèque de session, vous pouvez utiliser
$ this-> session
pour accéder à l'objet de session et accéder aux méthodes prises en charge. leset_userdata
Cette méthode est utilisée pour créer une nouvelle variable de session et prend généralement deux arguments-clé et valeur..$ this-> session-> set_userdata ('favourite_website', 'http://tutsplus.com');Vous pouvez également utiliser le
set_userdata
méthode pour créer plusieurs variables en un seul appel. Dans ce cas, il vous suffit de fournir un argument, qui doit être un tableau, comme indiqué ci-dessous..// set array of items in session $ arraydata = array ('author_name' => 'Sajal Soni', 'website' => 'http://code.tutsplus.com', 'twitter_id' => '@sajalsoni', 'intérêts' => array ('tennis', 'travelling')); $ this-> session-> set_userdata ($ arraydata);Les utilisateurs avec des yeux vifs auraient remarqué que vous pouvez également affecter un tableau en tant que valeur de toute variable de session, comme indiqué ci-dessus dans la section
intérêts
Exemple.Voyons maintenant comment récupérer la valeur d’une variable de session. le
données d'utilisateur
La méthode est utilisée pour extraire la valeur d'une variable de session. Elle nécessite généralement la clé de la variable de session que vous recherchez comme premier argument..echo "Site Web préféré:". $ this-> session-> userdata ('favourite_website');Si vous recherchez l'une des entrées du tableau, vous pouvez utiliser les éléments suivants:
echo "Intérêt (exemple de tableau):". $ this-> session-> userdata ('interest') [0];Plus souvent qu'autrement, vous voulez savoir combien de variables au total sont stockées dans une session active à des fins de débogage, et vous pouvez également le faire..
// tout est stocké dans la session en même temps echo ''; print_r ($ this-> session-> userdata ());Oui, le même
données d'utilisateur
méthode vient à notre secours! Si vous ne passez aucun argument à ladonnées d'utilisateur
méthode, il va retourner toutes les variables de session.Enfin, voyons comment vous pouvez supprimer des variables de la session. C'est le
unset_userdata
méthode que vous pouvez utiliser si vous souhaitez supprimer des entrées de session.// désactive la clé spécifique de la session $ this-> session-> unset_userdata ('favourite_website');Et voici la variante de la même méthode qui montre comment supprimer plusieurs entrées en une seule fois..
// désélectionne plusieurs éléments à la fois $ keys = array ('twitter_id', 'interest'); $ this-> session-> unset_userdata ($ clés);Et cela devrait supprimer le
twitter_id
etintérêts
les entrées de la session.Allez-y et testez le
indice
méthode pour voir les choses en action.Goodies utiles: Flashdata et Tempdata
Dans la dernière section, nous avons abordé les bases de la gestion de session dans CodeIgniter. Dans cette section, nous allons discuter de quelques autres méthodes utilitaires fournies par la bibliothèque de session..
Dans votre développement quotidien, vous devez souvent afficher des messages en réponse à certaines actions de l'utilisateur. Par exemple, vous souhaitez afficher un message de réussite lorsqu'une personne publie un commentaire sur votre site. Le message ne doit s'afficher qu'une seule fois. le
set_flashdata
méthode est un candidat idéal pour ce genre de cas d'utilisation.En réalité,
set_flashdata
est très similaire à laset_userdata
Cette méthode vous permet de sauvegarder une valeur en session. La seule exception est que la valeur de session définie par leflashdata
La méthode est disponible pour la prochaine demande uniquement. Dans les requêtes suivantes, vous ne pourrez plus accéder à ces variables car elles ont été effacées..Prenez le code de la
setflash
méthode.fonction publique setflash () // définir les données flash $ this-> session-> set_flashdata ('flash_welcome', 'Hey, bienvenue sur le site!'); // marque les données existantes comme données flash $ this-> session-> set_userdata ('flash_message', 'Je suis un message flash!'); $ this-> session-> mark_as_flash ('flash_message'); redirect ('exemple / getflash');Vous pouvez créer un nouveau
flashdata
variable de la même manière que vous auriez créé une variable de session régulière en utilisant leset_userdata
méthode. D'autre part, vous pouvez également marquer une variable de session existante en tant queflashdata
variable. Dans ce cas, vous devez utiliser lemark_as_flash
méthode, comme indiqué dans le code ci-dessus.Enfin, nous redirigeons l'utilisateur vers le
avoir le Flash
méthode qui montre comment utiliser les variables flashdata définies dans lesetflash
méthode. Regardons rapidement leavoir le Flash
méthode.fonction publique getflash () // récupère les données flash echo "Message d'accueil Flash:". $ this-> session-> flashdata ('flash_welcome'); écho ''; print_r ($ this-> session-> flashdata ());Comme prévu, il y a un
flashdata
méthode qui vous permet de récupérer les variables de session stockées sous flashdata. Si vous appelez leflashdata
méthode sans aucun argument, il va retourner toutes les variables flashdata similaires à celle de ladonnées d'utilisateur
méthode.Allez-y et testez le
setflash
méthode. Vous serez redirigé vers l'URL getflash et le message s'affichera. Si vous actualisez la page getflash, vous ne verrez plus ce message.!Ensuite, il existe une autre variante fournie par la bibliothèque de session dans cette catégorie: les variables de session tempdata. Si vous voulez créer des variables de session pour une période donnée, le
set_tempdata
la méthode est celle que vous recherchez.Par exemple, si vous souhaitez créer une variable de session à supprimer automatiquement au bout d’un certain délai, vous pouvez utiliser
set_tempdata
méthode pour créer une telle variable, comme indiqué dans la méthode suivante.fonction publique tempdata () // définir les données temporaires $ this-> session-> set_tempdata ('coupon_code', 'XYEceQ!', 300); // marque les données existantes en tant que données temporaires $ this-> session-> set_userdata ('coupon_code', 'XYEceQ!'); $ this-> session-> mark_as_temp ('coupon_code', 300); // récupère les données temp echo $ this-> session-> tempdata ('coupon_code');Le troisième argument de la
set_tempdata
méthode indique le nombre de secondes après lequel la variable sera supprimée de la session.Vous pouvez également marquer une variable de session existante comme tempdata à l’aide de la touche
mark_as_temp
méthode à condition que vous ayez déjà créé une variable de session en utilisant leset_userdata
méthode.Enfin, vous pouvez utiliser le
tempdata
méthode pour récupérer la valeur de toute variable tempdata.Il est donc agréable de disposer de telles méthodes utilitaires au cours de votre cycle de développement quotidien.!
Ce que vous ne devriez pas oublier: Session Destroy
Détruire la session est probablement la dernière chose que vous voudriez faire lorsque l'utilisateur se déconnecte. Il s'assure que les variables de session définies jusqu'à présent sont supprimées de la session active et ne sont plus disponibles pour les requêtes suivantes..
Tirons dans le code de la
détruire
méthode et passer à travers elle.fonction publique destroy () $ this-> session-> set_userdata ('favourite_website', 'http://tutsplus.com'); // détruit la session $ this-> session-> sess_destroy ();C'est le
sess_destroy
méthode qui nous aide à détruire la session active. Bien sûr, cela supprimera également les variables tempdata et flashdata définies dans la session active..Assurez-vous de prendre l'habitude de détruire une session lorsqu'elle n'est plus utile dans le contexte utilisateur actuel..
Cherry on the Top: Pilotes de session
Nous sommes dans la dernière section de cet article, les pilotes de session. Le plus souvent, vous ne vous occupez pas de la configuration du pilote de session dans votre application en tant que pilote de session par défaut, le système de fichiers, est déjà configuré avec la configuration par défaut..
C'est donc le système de fichiers qui contient toutes les données relatives à la session. Il est largement utilisé et constitue la norme acceptée pour la gestion de session. Cela dit, CodeIgniter prend également en charge d’autres pilotes de session que vous pouvez utiliser si vous souhaitez passer du pilote de session du système de fichiers par défaut..
Voici une liste de tous les pilotes de session pris en charge dans CodeIgniter:
Comme son nom l’indique, le pilote de session de la base de données stocke les données de la session dans la base de données que vous avez configurée pour votre application CodeIgniter..
D'autre part, les deux autres pilotes de session sont des mécanismes de stockage en mémoire préférés pour les sites Web hautes performances..
dans le application / config / config.php
fichier, vous pouvez configurer le pilote de session que vous souhaitez utiliser dans votre application.
$ config ['sess_driver'] = 'base de données'; $ config ['sess_save_path'] = 'custom_sessions';
Il indique à CodeIgniter d’utiliser le pilote de session de la base de données et les données de la session seront sauvegardées dans le répertoire. custom_sessions
Table MySQL.
La discussion de chaque pilote de session dépasse le cadre de cet article, mais vous pouvez consulter la documentation officielle du site qui fournit un guide détaillé pour chaque pilote..
La gestion de session dans CodeIgniter était le sujet du tutoriel d'aujourd'hui, et nous en avons discuté de manière approfondie en examinant tous les aspects du sujet..
En commençant par les opérations de base sur les sessions, nous avons également passé en revue ces méthodes flashdata et tempdata, et c’est la discussion sur les pilotes de session qui a conclu notre article..
Comme toujours, vous pouvez crier vos questions et suggestions en utilisant le flux ci-dessous!