 |
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.
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 !
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
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.
<?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.
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".
dans le répertoire "cookies" du répertoire d'installation de Windows.
Netscape garde ses cookies dans le fichier "cookies.txt". Ce fichier peut se trouver un peu n'importe où.
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.
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.
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).
|