Les cookies
La particularité du protocole HTTP est qu’il est sans état c’est à dire qu’il ne conserve pas les informations transmises par le même utilisateur
Netscape à étendu le protocole HTTP avec deux entêtes :
- SET-COOKIES : envoyé par le serveur pour créer un cookie. Il faut un set-cookies par cookie
- COOKIE : envoyé par le client. Une instruction de cookie pour envoyer plusieurs cookies
Comment créer un cookie
On peut créer un cookie à l’envoi de l’entete HTTP grace au header.
En PHP, on à deux fonctions permettant de gérer les cookies :
-
setcookie(nom,valeur[,date d'expiration en timestamp])
-
setrawcookie()
Exemple d’entete avec un set-cookie (resultat obtenu par telnet) :
HTTP/1.1 200 OK Date: Fri, 07 Dec 2007 09:11:54 GMT Server: Apache/2.0.55 (Win32) PHP/5.1.2 X-Powered-By: PHP/5.1.2 Set-Cookie: id=5 Content-Length: 0 Content-Type: text/html
En PHP, le tableau superglobal $_COOKIE permet de lire tous les cookies transmis par le navigateur.
Attention, il ne servira qu’a la lecture. Ecrire dans ce tableau ne modifiera en rien le cookie.
Pour mettre a jour la valeur d’un cookie, il faudra renvoyer un setcookie avec le nom de la valeur que l’on veut changer.
Il y aura une demande différé au navigateur lors d’un set cookie. Pour savoir s’il accepte ou non les cookies,
nous auront la réponse seulement au chargement de la deuxieme page
Supprimer un cookie
-
Par défaut :
Par défaut, si on ne spécifie pas de date au cookie, le cookie expirera à la finde la session.
C’est à dire, à la fermeture du navigateur. -
Par setcookie TIMESTAMP
Par set, On pourra spécifier une date à setcookie, elle puet etre négative et lorsque cette date est négative, le cookie ne disparaitra jamais du client. -
Par setcookie
Pour supprimer un cookie avec setcookie, on devra spécifier la valeur de setcookie a null
setcookie('id',null);
Etendue d’un cookie
Un cookie est visible par l’ensemble du site web qui l’a créée et ce, quelque soit la page.
Si on souhaite limiter un cookie a une page donnée, on le spécifiera dans la fonction setcookie.
//Le cookie ne sera visible que sur page.php setcookie('id',5,null,'/page.php');
Il est aussi possible de spécifier un domaine :
//Le cookie ne sera visible que sur page.php sur le domaine monsite.com setcookie('id',5,null,'/page.php','monsite.com');
Exemple :
On remarque le « .php.net » : ils incluent leur cookie à tout leur domaines.
Cookie « sécurisé »
Le cookie sera sécurisé si et seulement si la connexion se fait via une connexion SSL.
Pour gérer ce cas on fera :
//Le cookie ne sera visible que sur page.php sur le domaine monsite.com setcookie('id',5,null,'/page.php','monsite.com','httponly'); //httponly permet d'empecher la lecture du cookie par javascript par exemple.
Les limites du cookie
- On est limité dans le nombre (50 pour firefox par exemple)
- La taille qui doit etre inférieure à 5ko
- Limité par la sensibilité (sécurité)
Commentaires récents