Les sessions PHP

par

dans

Les sessions sont un moyen et natif à PHP permettant de conserver et faire persister des données lors de la navigation entre plusieurs pages.

L’identifiant de session

Chaque visiteur de l’application web se voit assigner un identifiant unique de session. Cet identifiant peut être stocké et réutilisé. Lors de l’accès à une page, une session est automatiquement créée ainsi que son identifiant. Cet identifiant est généralement passé au client grâce à un cookie. Le cookie de session, comme on l’appel, contient l’identifiant de la session d’un utilisateur.

L’identifiant de session peut être connu grâce à la fonction session_id();

Lire / écrire / vider une variable en session

Les données stockées en sessions sont enregistrées dans la variable superglobale $_SESSION.

Pour écrire une variable en session, on l’ajoute simplement au tableau $_SESSION. Pour la lire, on y accès comme à tout autre tableau et pour la supprimer on peut utiliser la fonction unset().

// écrire une valeur en session
$_SESSION['level'] = 28;
 
// lire une valeur en session
echo $_SESSION['level'];
 
// supprimer une valeur en session
unset($_SESSION['level'];

Ouvrir / fermer une session et durée de vie de la session

Tout script devant utiliser la session doit démarrer par appeler la fonction session_start(). Elle doit être appelée en tout début de script pour permettre l’accès à la superglobale $_SESSION.

Pour fermer / détruire une session on appel la fonction session_destroy(). Une session reste ouverte tant que l’utilisateur est actif. On y met fin lorsqu’il se déconnecte via un appel à la fonction session_destory() mais il faut également gérer le cas où il quitte l’application ou le cas où il reste inactif trop longtemps.

L’option session.cookie_lifetime indique au navigateur la durée de vie du cookie de session. La valeur O indique un stockage permanent, jusqu’à fermeture du navigateur. On indique généralement toujours la valeur O. L’option session.gc_maxlifetime doit avoir avec une valeur la plus petite possible.

À la fin du script, PHP prend automatiquement le contenu de la variable superglobale $_SESSION pour le stocker côté serveur. Par défaut, les sessions sont stockées dans des fichiers à l’emplacement spécifié dans la directive session.save_path.