javascript, javascripts, js, jscript, scripts, script, html, dhtml, dynamic, cookies, menu, frames, formulaire, source, code, gratuit, exemple, developper, html, php4, php3, php, mysql, liens, php2, forum, livre d'or, pages, web, dynamiques, programmation, webmasters, webmestres, tutorial, tutoriel, annuaires, espace, membres, banniéres, caddies, chats, compteurs, formulaires, forums, gestion, documentations, news, mailing, list, newsletter, moteurs, recherche, sondages, votes, statistiques, autres, agendas, calendriers, mail, annonces, audio, outils, réseaux, graphique, recommandation, site, sécurité, portail, creation, actualité, moteur de recherche, moteur, trucs, astuces, services, flash, action script, actionscript Tutoriaux : Php/MySQL
Script Masters : Javascript, Php, Mysql, html pour Webmasters!
 
    Script Masters
 
    Espace membre
 
    Langages
 
    Autres ressources
 
    Emploi avec Jobintree
 
    Ressources graphiques
 
    Recherche
 
    Kit graphique
 
    Liens
 
    Statistiques


 


Télécharger cet article au format PDF


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 :

 

Script :
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 :

Script :

<?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 :

Script :
<?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.

Script :
<?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.

 

- Un problème? Posez vos questions sur le forum Php/MySQL!
- Ce tutorial a été consulté 13226 fois


Script Masters © Ce texte est la propriété de son auteur.
Toute reproduction est interdite.

 




 
 
Fabien Daniel - © 2001-2009 | Hebergement : OVH | CNIL : 796128