Cours 4.10. Les sessions en PHP

Introduction

En PHP, les variables déclarées dans les scripts n'existe que durant l'exécution de ce script pour une page donnée. À la fin de l'exécution, le contenu des variables est perdu. Il est souvent nécessaire d'avoir des données persistentes au cours de la navigation. Sur un site marchand par exemple, le panier est conservé même si l'utilisateur navigue vers une nouvelle page ou recharge la page courante. Les sessions PHP permettent de conserver ces données au cours de la navigation.

Initialisation

Une session PHP démarre avec l'appel de la fonction session_start(). L'appel de cette fonction doit impérativement être la toute première instruction de votre script ou document, sinon les sessions ne fonctionneront pas. Voici un exemple :

<?php
// Démarre les sessions
session_start();
?>
// Votre code HTML et/ou PHP

Les variables de session

Les données de la session sont accessibles via le tableau global $_SESSION. Ce tableau est accessible en lecture et en écriture. L'exemple suivant compte le nombre de fois que la page a été chargée :

<?php
// Démarre les sessions
session_start();

// Si la session existe, incrémente le compteur,
// sinon, initialise le compteur.
if (isset($_SESSION['counter'])) 
  $_SESSION['counter']++;
else
  $_SESSION['counter']=1;
?>

<!-- Affiche le comptage -->
Vous avez visité cette page <?= $_SESSION['counter'] ?> fois.

Destruction

Les sessions, comme leur nom l'indique sont liées à une session de l'utilisateur. Lorsque l'utilisateur ferme son navigateur, la session est automatiquement détruite. Si les sessions sont inactives, elles sont automatiquement détruite au bout d'un laps de temps. Cette durée de vie est un paramètre du serveur, généralement réglé par défaut sur 24 minutes.

Il est parfois nécessaire de détruire tout ou partie des variables de session, typiquement, lorsqu'un utilisateur se déconnecte. Il existe 2 façons de détruire les variables de session.

Détruire une variable

La fonction unset permet de détruire une variable en conservant les autres :

unset( $_SESSION['counter'] );

Détruire toutes les variables

La fonction session_unset détruit toutes les variables de la session :

session_unset();

Cette fonction est équivalente à $_SESSION = array();.

Exercice

Complétez le code suivant afin qu'il affiche le nombre de visites des pages page1.php et page2.php.

Voir aussi


Dernière mise à jour : 17/09/2022