introduction aux cookies et en-tetes http

I. Principes

 

II. Ou sont stockés les cookies ?

 

III. De quoi est constitué le contenu d'un cookie ?

IV. Comment générer un cookie avec PHP ?

 

V. Restrictions à connaître avec les cookies ?

 

VI. Comment lire les cookies quand un visiteur revient sur mon site ?

I. Principes

Les cookies sont des informations de type texte envoyés par le serveur et stockés sur le disque dur de l'utilisateur. Ils sont de durées variables préalablement définies qui peuvent aller de quelques minutes à plusieurs mois. L'utilisation des cookies est semblable aux champs des formulaires, ils sont stockés dans le tableau HTTP_COOKIE_VARS.

Ils permettent notamment d'identifier un client lors d'une première connexion à un serveur où il aura saisi un mot de passe, et de lui éviter de saisir à nouveau ce mot de passe lors de ses prochaines connexions.

A noter qu'un client peut interdire l'écriture d'un cookie sur son poste et que par conséquence  cette méthode a ses limites.


II. Ou sont stockés les cookies ?

Cela dépend du navigateur que vous utilisez, pour cet exemple je travaille avec Internet Explorer v6. Sous windows xp, les cookies sont stockés pour l'utilisateur harely:
   
Pour notre exemple :
   


III. De quoi est constitué le contenu d'un cookie ?

Regardons par exemple le cookie de free 94@www.free[1].txt
Rq: la valeur entre cochets: indique combien de cookies sont stockés dans le fichier :

Pour notre exmple:

- La première valeur (hyname) est le nom du cookie. Notez que le nom du cookie n'est pas le nom du fichier
- La seconde valeur (formation) est la valeur assignée au cookie
- La troisième valeur (127.0.0.1) indique d'où provient le cookie et par quel site il est utilisé.

N.B : Si plusieurs cookies proviennent du même site ils sont tous stockés dans le même fichier


IV. Comment générer un cookie avec PHP ?

C'est la fonction setcookie() qui permet l'envoi de cookie :

<?
$expire = 365*24*3600;
setcookie("hyname","Arl_Formations",time()+$expire);
?>

Ici on envoie un cookie portant le nom : hyname et ayant la valeur : formation, nous avons également indiqué que ce cookie avait une date de validité de 1 an (date en cours + 365*24*3600), attention il faut toujours exprimer cette valeur en seconde!

N.B: Si vous souhaitez envoyer plusieurs cookies il vous suffit de mettre plusieurs setcookie() les uns à la suite des autres, je vous rappelle qu'ils sont tous stockés dans un seul et même fichier, comme ceci :

<?
$expire = 365*24*3600;
setcookie ("hyname","prêt pour la formation:",time()+$expire);
setcookie ("nom","harel",time()+$expire);
setcookie ("prenom","yvon",time()+$expire);
?>

V. Restrictions à connaître avec les cookies ?

1 . L'envoi d'un cookie doit être la première fonction PHP que vous utilisez dans votre script, donc tout en haut du script. Si d'autres fonctions interviennent avant l'envoi du cookie, celui-ci ne fonctionnera pas.

2 . Le script qui envoi le cookie doit être placé de préférence sur la racine de votre serveur et non dans un sous répertoire

3 . Si vous envoyé un cookie sur un poste client celui-ci effacera automatiquement l'ancien cookie qui portait le même nom (si il y en avait un), autrement il le créera.


VI. Comment lire les cookies quand un visiteur revient sur mon site ?

Php va regarder si un fichier contenant des éventuels cookies existe sur la machine du visiteur. Vous il ne vous reste plus qu'à ajouter un $ devant le nom du cookie (qui doit toujours être écrit en MAJUSCULE comme les variables d'environnements).

<?
print ("Bonjour $_COOKIE["hyname"]");
?>

Notez que si le visiteur n'a pas de cookie venant de votre site, rien ne sera affiché et aucun message d'erreur n'apparaîtra, d'où le côté pratique de cette utilisation.