|
Untitled Document
 |
Définir un cookie |

|
Tutorial écrit par : Daniel Fabien - Script
Masters
|
|
Introduction |
|
|
PHP permet de définir et de lire aisément des cookies HTTP.
Les cookies ont été conçues par Netscape afin d’améliorer
les échanges client/serveur par le protocole HTTP. Ils permettent
en effet, d’enregistrer des informations coté client qui
peuvent être rappelés côté serveur. Ceci permet
bien évidemment d’améliorer grandement la transparence
des services web.
En pratique, on les utilises essentiellement dans deux cas : reconnaître
un visiteur à chaque visite sur un site (par exemple, enregistrement
de ses infos de connexion à son espace) mais également lors
du processus de gestion des sessions.
Dans ce tutorial, nous passerons en revue les principales spécificités
techniques des cookies. Puis, nous passerons à la pratique à
l’aide d’exemple concret permettant de créer, lire
et détruire un cookie.
|
|
Ce qu’il faut savoir des cookies |
|
|
Les cookies se présente sous la forme d’un petit fichier
contenant une information textuelle d’une longueur maximale de 4000
octets.
Chaque domaine (par exemple « .script-masters.com ») peut
stocké un maximum de 20 cookies.
A la création d’un cookie, on enregistre le serveur («
.script-masters.com » ou « 127.0.0.1 ») ainsi que le
répertoire (« / » pour la racine ou « /home »)
qui sont les seuls habilités à lire le cookie. Par exemple,
si je définis un cookie sur le serveur « .script-masters.com
» dans le répertoire « /home », il ne sera pas
possible de lire le cookie ailleurs que sur une page présente dans
le répertoire « .script-masters.com/home ».
Un navigateur peut stocker un maximum de 300 cookies.
Pour davantage d’informations sur les cookies, consultés
les spécifications publiées par Netscape à la page
suivante : http://wp.netscape.com/newsref/std/cookie_spec.html
|
 |
Création d’un cookie |
| |
La création d’un cookie s’opère à l’aide
de la fonction setcookie présenté ci-dessous :
| bool setcookie ( string name [, string value [, int expire [, string
path [, string domain [, int secure]]]]]) |
Cette fonction comporte 6 paramètres. Un seul est obligatoire le
nom du cookie. Voici une explication de chacun de ces paramètres
:
name : C’est le nom du cookie. Ce doit être
une chaîne de caractères. Veillez à utiliser un nom
explicite et unique car il vous permettra également d’identifier
votre cookie lors de la lecture.
value : C’est la valeur de l’information
que contiendra votre cookie. Il s’agit ici encore d’une chaîne
de caractères.
expire : Date d’expiration de votre cookie (date
à laquelle le cookie sera supprimé par le navigateur). Elle
doit être au format Unix, c'est-à-dire en nombre de seconde
depuis le 1er janvier 1970. Pour obtenir cette valeur on pourra utiliser
la fonction time() que l’on incrémentera du nombre de seconde
de notre choix (par exemple 3600*24 = 24 heures). Pour détruire
le cookie à une date connue, on pourra utiliser la fonction mktime().
Des exemples sont disponibles plus bas.
path : Répertoire dans lequel le cookie est valide
(cf : Ce qu’il faut savoir sur les cookies)
domain : Domaine pour lequel le cookie est valide. Le
domaine doit comporter au minimum deux points. Exemple : « .script-masters.com
» ou « 127.0.0.1 ».
secure : Si la valeur de ce paramètre est à
1, le cookie ne pourra être lue que par liaison sécurisé
(https). Dans la majorité des cas on laisse cette valeur indéfinie
(ou à 0)
Voici un exemple présentant plusieurs techniques permettant d’ajouter
à un cookie les noms et mot de passe d’un utilisateur :
| <?php
// On définit quelques variables concernant l'utilisateur
$nom = "toto";
$mdp = "titi";
// On transforme les variables en un tableau
$tableau = compact("nom","mdp");
// On convertit ce tableau en une chaîne de caractère
$chaine = implode("|",$tableau);
// Envoi d'un cookie qui disparaîtra après la fermeture
du navigateur
SetCookie("SM_Cookie_1",$chaine);
/*
Définition d'un cookie en local qui restera présent
pendant une heure
Ce cookie s'applique aux répertoire et sous répertoire
de /rep
*/
SetCookie("SM_Cookie_2",$chaine,time()+3600,"/rep",
"127.0.0.1",0);
/*
Définition d'un cookie sur le domaine script-masters.com
qui restera
présent jusqu'au 1/1/2005. Ce cookie s'applique depuis la
racine
du site ( "/" )
*/
SetCookie("SM_Cookie_3", $chaine, mktime(0,0,0,1,1,2005),
"/", ".script-masters.com",0);
/*
Idem que précédemment, mais le cookie doit être
transmis par
protocole sécurisé (https)
*/
SetCookie("SM_Cookie_4", $chaine, mktime(0,0,0,1,1,2005),
"/", ".script-masters.com",1);
?>
|
Le principe consiste à concaténer le nom et le mot de passe
en une chaîne de caractère. Pour plus d’informations
sur la fonction compact() : consultez cette
astuce et sur la fonction implode() celle-ci.
|
 |
Lecture d’un cookie |
| |
La lecture d’un cookie se fait de manière très simple.
Il existe deux façons de récupérer cette valeur :
<?php
// Afficher un cookie
echo $_COOKIE["SM_Cookie_2"]."<br>";
echo $HTTP_COOKIE_VARS["SM_Cookie_1"];
?> |
Pour récupérer dans un tableau les variables définit
lors de la création du cookie, vous pouvez par exemple utiliser
la fonction explode() détaillée
ici.
|
 |
Suppression d’un cookie |
| |
Le principe de destruction d’un cookie est très simple.
On a vu plus haut que le navigateur supprime un cookie dont la date est
expirée. Pour le détruire, il suffit donc de le redéfinir
avec une date révolue. Ici, on récupère le tampon
horaire auquel on retire une heure.
<?php
//Destruction de cookies
SetCookie("SM_Cookie_1","", time() - 3600);
?>
|
Si vous n’avez pas définit de date d’expiration pour
votre cookie, celui-ci sera supprimé à la fermeture du navigateur
client.
|

|
Conclusion |
| |
Comme vous pouvez le constaté, l’utilisation de cookie est
particulièrement simple en PHP et peut s’avérer très
utile dans le développement de services web. Malheureusement, certains
visiteurs désactivent les cookies. Pensez toujours à prévenir
ces cas là soit en proposant une solution de rechange, soit en
précisant que vos services ne sont pas accessible si les cookies
sont inactivés.
|
|
|
|