Tout d'abord, nous allons briser le mythe de longue date (ou du moins je pense qu'il est un mythe existant) qu'un cookie de session est quelque chose de différent qu'un biscuit régulier. Ce n'est pas. Un cookie de session est juste un cookie régulier. Seules les propriétés du cookie de session définies (ou plutôt non définies) sont généralement différentes.Mais le mécanisme est exactement le même.
Un cookie est fixé par l'envoi d'un en-tête de réponse HTTP au navigateur:
Set-Cookie: name=value[; possible expiration-date][; other possible properties]
Ce qui distingue généralement une cookie de session d'un cookie régulier est qu'aucune date d'expiration est fixée (
ou à l'expiration date est définie sur une date dans le passé
). Ce qui signifie que le navigateur disposera le cookie après la fermeture du navigateur. Mais un cookie "régulier" peut le faire aussi bien. Ainsi, en faisant ainsi un «cookie de session» pour ainsi dire.
Maintenant que nous avons cela à l'écart; Le mécanisme par lequel les cookies sont généralement utilisés par les applications pour les faire agir comme un cookie de session, en plus des propriétés mentionnées ci-dessus, est que la valeur du cookie ne contient qu'une valeur unique identifiable de quelque sorte. Peut-être un md5
d'un hash sha1
.
Chaque fois que le navigateur demande une ressource sur le serveur, il envoie le long de ce cookie (à moins qu'il ait expiré) avec un en-tête de requête HTTP comme ceci:
Cookie: name=value
Les mécanismes de session dans le backend (étant PHP dans votre cas) a lié l'identifiant unique du cookie avec des données qui ont été stockées dans un fichier dans le système de fichiers du serveur, ou peut-être dans une base de données. De cette façon, chaque fois que le cookie est reçu, il est capable de récupérer ces données et de les lier à la requête. L'avantage de ceci, est que les informations sensibles 1) peuvent être cachées de ne pas avoir à voyager sur le réseau, et 2) ne finit pas dans le cache des cookies du navigateur des utilisateurs, en le gardant sur le serveur. Donc, fondamentalement, vous voulez envoyer des informations non-sensibles et non-application-vitales dans un cookie régulier (pensez à: préférences de mise en page, une liste de lecture non persistant comme sur YouTube, etc.), et utilisez une session pour stocker des informations sensibles.
modifier:
Désolé, ignorer le « ou la date d'expiration est fixée à une date dans le passé », comme il était faux. Cela entraînera l'invalidation immédiate du cookie par le navigateur, et ne sera donc plus envoyé avec les requêtes.
Lorsque vous définissez une session php définit également un cookie. – Neddy