Les Cookies en PHP




  1. C'est quoi un cookie

Un cookie est le nom donné à une information stockée sur le disque d'un utilisateur pour pouvoir réutiliser des informations déjà saisies telle qu'un login, un Id, un encours d'achat...
Ces informations sont donc souvent utilisées pour gérer les achats en ligne, les mails, et autres comptes divers.

Il existe bien sur plusieurs sortes de cookie :
  • les cookies permanents : ils restent sur l'ordinateur en permanence (sauf bien sur après un formatage !)
  • les cookies à durée limitée : leur durée de vie est prévue à l'avance, 10 minutes, 1 journée, 1 an, 1 seconde
  • les cookies temporaires : ils existent tant que le navigateur est lancé, et sont supprimés dès que vous fermez votre navigateur.
Comme le cookie dépend du navigateur, cela veut dire que si vous allez sur un site avec un Opera, si vous y retournez avec Netscape, il ne trouvera pas votre cookie, et vous devrez allez sur le site comme si c'était la première fois !

Le cookie dépend également du site. C'est à dire qu'un cookie ne peut être utilisé par 2 sites différents. Ainsi, même si je le voulais, je ne pourrais pas aller voir dans vos cookies pour savoir si vous avez un compte chez Yahoo par exemple !

Tous ces paramètres font que les cookies sont très complets, et assez sécurisés contrairement à ce qui avait été dit au début des cookies.



  2. Utiliser les cookies



  2. 1. Introduction

En PHP, j'oserais dire rien de plus simple !
En fait, ce qui est compliqué, c'est plus de comprendre le principe des cookies !
Les cookies sont envoyés dans l'en-tête HTTP de la page. Ce qui veut dire que le plus gros problèmes avec les cookies c'est de les utiliser au bon moment, et surtout qu'on ne peut pas les modifier n'importe quand !

Mais bon, un bon exemple valant mieux que beaucoup de théorie, on va passer à la partie pratique !



  2. 2. Ecrire un cookie

En PHP, un cookie peut être enregistré avec la commande "setcookie" !!! Ca alors, c'est hyper compliqué de s'en rappeler...

Si vous souhaitez fixer le cookie "langue" à la valeur "fr" (par exemple pour des sites en plusieurs langues), il suffit de faire le code suivant :
<?php
  setCookie("langue","fr");
?>
Et voila ! Attention, il faut noter que le code suivant ne marchera pas :
<HTML>
<?php
  setCookie("langue","fr");
?>
<BODY>
  Un texte bidon ici.
</BODY>
</HTML>
En effet, les cookies étant passé en en-tête HTTP vers le serveur, il ne peuvent être traité qu'avant l'affichage du moindre caractère. Pour obtenir la même chose, mais pour que ça marche, vous devez écrire :
<?php
  setCookie("langue","fr");
?>
<HTML>
<BODY>
  Un texte bidon ici.
</BODY>
</HTML>
Ce code fonctionne. On voit que le cookie est bien envoyé avant l'affichage de la première ligne, la où ils doivent être.
La syntaxe de setCookie est la suivante :
setcookie ( Nom_du_Cookie, Valeur, Durée_de_vie, Répertoire, Domaine, Sécurisé)

Signification des variables :
  • Nom_du_Cookie : comme nous l'avons déjà vu, il s'agit du nom du cookie pour pouvoir à nouveau y accéder
  • Valeur : la valeur donnée au cookie
  • Durée_de_vie : durée de vie du cookie. Il peut être permanent, de session, ou ayant une durée fixe (1h, 10min...)
  • Répertoire : si le cookie ne doit s'appliquer qu'à un répertoire précis, et ne doit pas être accessible ailleurs (attention, cette option pose parfois des problèmes sous IE)
  • Domaine : domaine applicable pour le cookie, ce qui permet par exemple d'envoyer des informations d'un site à un autre
  • Sécurisé : le cookie ne sera envoyé que dans le cas d'une connexion sécurisée (HTTPS)

Voici donc quelques exemples d'utilisation des cookies pour bien comprendre le fonctionnement :
<?php
// ajout d'un cookie standard
  setCookie("langue","fr");
// le cookie a une durée de vie d'1 minute
  setCookie("langue","fr",time()+60);
// le cookie a une durée de vie de 365 jours
  setCookie("langue","fr",time()+60*60*24*365);
// le cookie "langue" prend la valeur de "$langue" et durera 10 minutes
  setCookie("langue",$langue,time()+600);
// le cookie ne sera lisible que depuis le répertoire "/multilangue/" du site
  setCookie("langue","fr",time()+600,"/multilangue/");
?>
En réalité, le cookie "permanent" n'existe pas, mais il suffit de fixer un nombre de seconde de par exemple 1000000000, ce qui fait deja plus de 30 ans !
Les 2 choses à retenir :
- Les cookies doivent être en tout début du fichier PHP
- Les cookies ne s'applique pas directement à la page courante, mais uniquement lors du prochain chargement



  2. 3. Lire un cookie

Il existe 2 méthodes pour lire un cookie :
<?php
  echo $langue;
  echo $HTTP_COOKIE_VARS["langue"];
?>
Pour rappel : un cookie ne peut être accessible dans la page où il a été créé. L'astuce décrite plus bas consiste à ajouter une variable avec la valeur qui nous intéresse.



  2. 4. Effacer un cookie

<?php
  setCookie("langue","",0);
?>
Ceci permet d'effacer le cookie. En fait, le principe est simple : on fixe un cookie sans valeur et avec une expiration immédiate (temps à 0) !


  3. Où trouvez les cookies enregistrés ?

Seul les cookies "permanent" sont sauvegardés dans des fichiers. Les cookies de sessions ne sont enregistrés que dans la mémoire vive. Si vous avez un problème avec les cookies de sessions, vous devez en fait redémarrer votre navigateur.



  3. 1. IE



  3.1.1. Win NT/2000/XP

dans le répertoire "profiles" de Windows, il faut aller dans le répertoire du compte utilisé, puis tout simplement dans le répertoire "cookies".

  3.1.2. Win 95/98

dans le répertoire "cookies" du répertoire d'installation de Windows.

  3. 2. Netscape / Mozilla



  3.2.1. Général

Netscape garde ses cookies dans le fichier "cookies.txt". Ce fichier peut se trouver un peu n'importe où.

  3.2.2. Win NT/2000/XP

Dans le répertoire "profiles" du répertoire d'installation de Windows, puis dans le répertoire avec le nom du compte utilisé, ensuite, dans "Application Data", on retrouve un repertoire "Mozilla". Le fichier "cookies.txt" se trouve dans l'un des répertoires fils de celui-ci.

  3.2.3. Win 95/98

Dans le répertoire d'installation de Windows, on retrouve le répertoire "Mozilla\profiles\" dans lequel l'un des sous-répertoires comprends le fichier "cookies.txt" qui correspond à l'utilisateur qui vous intéresse.


  3. 3. Opera

Les cookies sont enregistrés dans le fichier "cookies4.dat" dans le répertoire d'installation d'Opera. Ce fichier ne peut être édité directement dans un fichier texte, par contre, il peut l'être avec le "Opera File Explorer" d'Opera (ici).





Page modifiée le : 02/11/2005
Site modifié le : 14/09/2020


Valid XHTML 1.0 Transitional