Session¶
Jusqu’à présent, nous avons utilisé des variables ou constantes accessibles uniquement sur la page courante. Il est parfois nécessaire de pouvoir stocker certaines informations pour les reprendre plus tard, sur une autre page du site par exemple. Les sessions sont le moyen de conserver des valeurs à travers les pages d’un site sans pour autant avoir un formulaire en GET ou POST en entrée.
Fonctionnement¶
Pour que les sessions fonctionnent sur les pages d’un site, il faut obligatoirement démarrer les sessions (et ce, sur chaque page où les sessions seront utilisées.) Cette méthode doit être déclarée au début de chaque page (avant l’en-tête html).
session_start(); // Démarrer le système de session
Dès à présent, quand un visiteur arrivera sur votre site, une variable de session unique lui sera attribuée. Cette dernière est un numéro en hexadécimal très grand appelé « ID de session ». PHP se charge de transmettre ce numéro de page en page en le stockant dans un cookie.
Création¶
Maintenant que la session est démarrée, il est possible de créer autant de variables de session que nécessaire. Pour rappel, ce sont des variables qui vont pouvoir être utilisées sur n’importe quelles pages du site (pour autant que session_start() y figure). Pour créer une variable de session, une super-globale de type tableaux associatifs est utilisée.
$_SESSION["isConnected"] = 1; // Créer la variable de session isConnected et affecte 1
$_SESSION["firstname"] = "Kara"; // Créer firstname et lui affecte un prénom
Accès aux variables¶
// Contrôler si une variable existe
if(isset($_SESSION["isConnected"]))
// Voir toutes les variables de session qui existent
var_dump($_SESSION);
// Afficher le contenu d'une variable de session
echo $_SESSION["firstname"];
Suppression¶
Les variables de session se détruisent quand le visiteur part du site Internet. Mais il est difficile de savoir clairement quand le visiteur est parti. Va-t-il fermer le navigateur, seulement changer d’onglets ? Pour détruire les variables de session existantes, il existe deux solutions. Soit une fonction de déconnexion est créée, soit le timeout du serveur pour les sessions est utilisé.
// Se déconnecter - supprime l'ensemble des variables de session
session_destroy();
// Supprimer une variable de session en particulier
unset($_SESSION["firstname"]);
// Dans le fichier php.ini
session.cookie_lifetime = 0 // 0 indique jusqu'à ce que le navigateur est redémarré