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.
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 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.
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.
La fonction unset
permet de détruire une variable en conservant les autres :
unset( $_SESSION['counter'] );
La fonction session_unset
détruit toutes les variables de la session :
session_unset();
Cette fonction est équivalente à $_SESSION = array();
.
Complétez le code suivant afin qu'il affiche le nombre de visites des pages
page1.php
et page2.php
.