Langage de programmation PHP
Chapitre 1. Introduction
Chapitre 2. Variables, opérateurs et expressions
Chapitre 3. Instructions de contrôle
Chapitre 4. Tableaux
Chapitre 5. Entrées/Sorties
Chapitre 6. Réutilisation de code
Chapitre 7. Lecture/écriture de fichiers
Chapitre 8. Fonctions diverses
Chapitre 9. Sérialisation
Chapitre 10. Fonctions orientées réseau
Chapitre 11. Base de données
Chapitre 12. Manipulations d’images
Chapitre 13. Programmation objet : PHP et les classes ( PHP 4/PHP 5)
Chapitre 14. Gestion des Exceptions (PHP 5)
Chapitre 15. Contrôle de sessions
Chapitre 16. PHP - Ajax
Chapitre 17. Webservices & SOAP
Chapitre 18. PHP en chiffre
Chapitre 19. Conclusion
Chapitre 20. Bibliographie
Page d'accueilTable des matièresNiveau supérieurPage précédenteBas de la pagePage suivante

Chapitre 15. Contrôle de sessions

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 :

  • $_SESSION=array();

Enfin, la fonction session_destroy() supprime l'identifiant de la session.

Page d'accueilTable des matièresNiveau supérieurPage précédenteHaut de la pagePage suivante