Skip to content

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 :

cookie

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é)