Le protocole HTTP véhicule les pages HTML du serveur HTTP vers le navigateur de l’internaute. Il s’agit d’un protocole “déconnecté” ou “sans état“, c’est-à-dire qu’il envoie les pages HTTP à l’adresse IP qui les demande, sans se soucier de savoir s’il en a déjà préalablement transmis à cette même adresse. Le serveur HTTP est donc dépourvu de mémoire. Une propriété assez contraignante puisque toutes les applications modernes du web nécessitent de se souvenir des relations établies avec l’internaute.Ce besoin du souvenir se révèle indispensable pour personnaliser les pages d’un portail en fonction de l’utilisateur (il ne peut pas changer d’identité à chaque nouvelle page), pour gérer un panier d’achats sur un site marchand (tous les consommateurs n’ont pas le même panier)… Ce besoin correspond aux fonctions d’un protocole dit “connecté“. Lorsqu’une connexion s’établit entre deux applications, le protocole enregistre chaque transaction. Il est ainsi possible d’annuler la dernière commande, d’obtenir confirmation que celle-ci a bien été exécutée, etc.Dans le cadre d’un échange de page entre un navigateur et un serveur d’application, la mise en ?”uvre d’un mécanisme de session revient au même : lors de chaque échange, il s’agit de vérifier à qui le serveur d’application a à faire. Le serveur HTTP étant dépourvu d’intelligence, le serveur d’application se charge de gérer les sessions.
1 – La création de la session
(1) (Figure 2) Lorsque l’internaute se connecte à un site web ?” que nous appelons site.com ?” pour obtenir la page “index.php“, son navigateur émet un en-tête HTTP du type “GET http://www.site.com/index.php HTTP 1.0“. Cet en-tête est intercepté puis analysée par le serveur HTTP, qui passe la main au serveur d’application compte tenu de l’extension “PHP” du fichier.(2) Le serveur d’application lit le fichier “index.php” à la recherche des instructions à exécuter. Il tombe alors sur la ligne “Session_start();” signifiant que le serveur d’application doit commencer à gérer une session. Il existe plusieurs méthodes pour simuler un protocole connecté. Toutes ont la même stratégie, à savoir écrire un identifiant sur le poste de l’internaute, puis tester cet identifiant par rapport à un référentiel gardé en mémoire du côté du serveur.(3) La première approche consiste à placer cet identifiant de session dans toutes les URL renvoyées à l’internaute. La page “index.php” est donc complètement “parsée” : à chaque fois que le serveur d’application découvre une balise “