Le protocole HTTP étant un protocole sans état, le serveur ne garde pas trace de l'identitéde ses visiteurs. Il n'est donc pas capable lorsqu'il reçoit une nouvelle requête, de savoir si elle provient de quelqu'un qui s'est déjà connecté.
Pour y parvenir, il est nécessaire de faire suivre de page en page une information permettant d'identifier l'utilisateur.
La solution la plus communément adoptée consiste à stocker chez le client une information qu'on pourra lui demander de renvoyer lorsqu'il fera une nouvelle demande de page.
De telles informations sont appelés cookies et peuvent être de deux types :
Si l'on a besoin d'utiliser un grand nombre de paramètres pour réaliser un suivi de session adapté à ses besoins (identité de l'utilisateur, contenu d'un panier d'achat, ...) on est amené à stocker un grand nombre de cookies qui vont devoir faire d'incessants aller-retour sur le réseau.
Les langages de scripts actuels proposent une solution simplifiée du problème, qui évite tout ce trafic, en stockant chez l'utilisateur un seul cookie qui sert de clé dans une base de données locales pour accéder à diverses informations stockées sur le serveur pendant le temps de la session.
C'est l'objet des objets Session d'ASP ou de PHP.
L'utilisation de cookies résidant sur le poste de l'utilisateur (enregistré sur son disque) permet de faire un suivi à long terme de l'utilisateur, d'enregistrer ses préférences, ...
Bien qu'un cookie ne soit normalement accessible qu'au serveur qui l'a créé, il n'est pas vraiment difficile d'explorer le disque d'un utilisateur à la recherche de cookies pour traquer ses habitudes (ceci ne fonctionne qu'avec les cookies permanents).
C'est pour cette raison que de nombreuses personnes désactivent dans leur navigateur l'utilisation de cookies, empêchant ainsi d'utiliser les techniques précédentes pour réaliser un suivi de session.
Pour être sûr de pouvoir réaliser ce suivi, il faut travailler autrement et gèrer de façon manuelle la connexion.
L'approche la plus simple consiste à transmettre au client un identifiant que l'on retournera au serveur en le passant en paramètre de l'url, sous la forme <url>?id=#AB1608F34. Cet identifiant pourra être utilisé comme une clé pour accéder à une base de données locale dans laquelle on pourra stocker toutes les informations nécessaires.
Le langage PHP permet d'automatiser cette méthode en proposant un suivi transparent de la connexion.