IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Sessions et cookies en PHP


précédentsommairesuivant

II. Les sessions

II-A. Introduction

La session est un mécanisme qui permet à PHP de garder « en mémoire » un nombre illimité de valeurs entre plusieurs requêtes d'un même utilisateur.
Car maintenant qu'on a vu qu'on pouvait garder une trace d'un utilisateur, les sessions viennent pallier un problème des cookies : leur faible capacité de stockage. En effet, les données de session sont un fichier stocké (à l'inverse du cookie) non pas sur le disque du visiteur, mais sur le serveur. Ainsi, il est impossible d'avoir accès aux variables de session via JavaScript par exemple. De plus, elles ne transitent pas sans arrêt entre le navigateur et le serveur (à la différence des cookies). Une session permet comme le cookie de stocker temporairement des valeurs relatives à un même internaute. Les variables de sessions autorisées sont les variables chaînes, entières, flottantes, caractères, tableaux, objets (à la condition que la classe soit chargée avant la réouverture de la session)… Mais en aucun cas les variables ressources comme celles qui sont utilisées pour les bases de données ni créer des images… La durée d'une session est définie par l'hébergeur, mais on peut parfois la modifier si on a accès à certains paramètres de la configuration de PHP.

II-B. À quoi servent-elles ?

Elles ont plusieurs utilités. De par leur utilisation, on peut pister le visiteur (et établir des statistiques précises) ou transporter aisément des variables de page en page. On les utilise aussi généralement en complément des cookies dans les scripts d'identification, car parfois le client n'accepte pas les cookies, et donc dans ces situations la session remplace parfaitement le cookie, stocke son identifiant et son mot de passe crypté pour que le membre n'ait pas à le répéter sur chaque page.

II-C. Fonctionnement

Les sessions permettent de conserver des variables tant que l'internaute reste connecté au site et environ 30 minutes après (en cas de déconnexion du visiteur par exemple, mais ce temps dépend de votre hébergeur : renseignez-vous grâce à la fonction phpinfo()). La session est unique, un identifiant est donc généré aléatoirement pour chaque utilisateur. Et c'est cet identifiant qui représente l'état actuel de la session de travail.
C'est sur lui que repose toute la sécurité du compte de l'utilisateur, de manière générale. Il ne s'agit que d'un petit morceau de texte, unique à chaque visiteur, généré aléatoirement et long, en général, de 32 caractères.
Certains paramètres de php.ini permettent de personnaliser la génération de cet identifiant : session.hash_function - session.entropy_length et session.entropy_file.
Pour reconnaitre un internaute, dans un protocole HTTP sans état, son identifiant doit transiter entre chaque requête que celui-ci génère.
L'identifiant est soit stocké dans un cookie qui est passé de requête en requête, soit il transite dans l'URL, on appelle ça le trans-id, c'est le fameux ?PHPSESSID=une-chaine-aleatoire.
Ce mode de transfert laisse en revanche apparaitre cette fameuse chaine, il ne sera utilisé que lorsque le client refuse les cookies, ce qui de nos jours est très rare.
Les moteurs de recherche par exemple, n'acceptent pas les cookies, c'est pour ça qu'ils indexent souvent des pages avec un PHPSESSID, si le webmaster ne leur prête pas une attention particulière.


précédentsommairesuivant

Copyright © 2006 Developpez.com Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.