HTTP n'est pas un protocole maintenant un état entre de
transactions. Ceci signifie entre autre qu'il n'est pas possible de
savoir que deux requêtes qui se suivent ont été réalisées par le même
utilisateur.
Afin de palier à ce problème, un certain nombre de
mécanismes ont été mis en oeuvre afin de suivre un utilisateur tout au
long de sa session. Mais qu'est ce qu'une session ? C'est une instance
d'un navigateur. Tant que la fenêtre du navigateur n'a pas été fermée
(et que nous sommes dans un délai imparti), nous sommes dans la même
session.
Lors d'une création d'une session, un identifiant aléatoire
est généré automatiquement : c'est l'identifiant de session. Il peut
être stocké dans un cookie (petit fichier texte stocké sur le poste « client »), envoyé dans l'URL (GET) ou par l'environnement (POST).
15.1 Création de cookies
- setcookie (nom, valeur, expiration, chemin, domaine, securite) permet de créer un cookie sur le poste client. Le premier champ nom est obligatoire et défini son nom. Si l'on souhaite lui associer une valeur on renseignera le second champ. Le troisième permet de spécifier une date d'expiration dans le cas où rien n'est précisé, le cookie devient permanent. Les champs chemin et domaine permettent de préciser les URL et domaines auxquels sont associés le cookie. Enfin le dernier, sécurité permet de n'envoyer le cookie que si la connexion est réalisée via le protocole sécurisé HTTPS (TRUE).
- Une fois le cookie créé, il est possible de le récupérer dans les pages suivantes via le tableau $_COOKIE['nom cookie'].
setcookie("TestCookie", $value, time()+3600); // expire dans une heure
- La suppression d'un cookie se fait en le recréant...mais avec une date d'expiration passée !
setcookie ("TestCookie", "", time() - 3600); // a expiré y'a une heure |
Les
cookies ne sont malheureusement pas supportés par l'ensemble des
navigateurs pour des raisons de confidentialité. Aussi, il est
nécessaire de mettre en oeuvre d'autres mécanismes afin de gérer les
sessions.
15.2 Création de variables de sessions
La
gestion par variables de sessions évite de passer par des variables
partagées et/ou des cookies. Les variables de session sont stockées
dans un SGBD et/ou dans un fichier ASCII, mais contrairement aux
cookies, elles sont stockées sur le serveur. Seul l'identifiant de la
connexion est stocké sur le poste du
client. Les fonctions associées sont les suivantes :
- bool session_start( ).
Dans le cas ou true est retournée, cette fonction permet soit de créer
une session (si pas encore définie) soit d’utiliser les variables
de la session en cours.
- string Session_ID ([string id]) permet
d’accéder à l’identifiant unique d’une session. Dans le cas où un
paramètre est précisé, l'identifiant de session changera et prendra la
valeur fournie
- string Session_Name([string name]) retourne le nom de la session en cours ou le change avec la valeur du paramètre précisé.
- L'affectation du tableau $_SESSION permet de créer des variables de session (il faut que session_start() soit en entête de page).
$_SESSION['mavariable'] = valeur ;
Par la suite, l'accès à la variable de session se fera également via ce tableau.
if (!isset($_SESSION['mavariable']))
$_SESSION['mavariable'] = valeur ;
else
print $_SESSION['mavariable'];
A la fin de la session, il est utile de désenregistrer la variable en utilisant
- unset ($_SESSION['mavariable']);
Si l'on souhaite désenregistrer l'ensemble des variables de session, il faut utiliser :
Enfin, la fonction session_destroy() supprime l'identifiant de la session.