Les cookies
Par Damien, mercredi 2 mars 2005 à 21:12 :: PHP :: #15 :: rss
Les cookies permettent de stocker des informations dans de petits fichiers textes sur votre disque, ce qui offre deux intérêts : reconnaître le visiteur lors d'une visite ultérieure (statistiques, par exemple), et stocker des informations temporaires que l'on souhaite transmettre de page en page (pour gérer une session, par exemple). Si vous voulez en savoir plus sur le principe de base des cookies, vous pouvez consulter cet article.
Nous allons voir qu'une fois de plus, PHP permet de gérer facilement les cookies.
1- Création du cookie
Pour utiliser les cookies, il faut tout d'abord en créer un. Pour cela, il suffit d'utiliser la fonction setcookie(), avant d'envoyer du html (comme pour la fonction header()).
booleen setcookie(chaine nom_du_cookie, chaine valeur, entier expiration, chaine chemin, chaine domaine, entier securise);
Cette fonction accepte donc 6 arguments. Seul le premier est obligatoire, mais un cookie n'aurait pas de sens sans le second (sauf pour l'effacer).
- nom_du_cookie : c'est le nom de votre cookie, l'idéal est de choisir un nom explicite pour ne pas interférer avec les autres cookies de votre site.
- valeur : il s'agit de la valeur du cookie, autrement dit la valeur qui sera renvoyée par la variable cookie.
Les arguments suivants servent à déterminer les conditions de validité du cookie. Leur présence est optionnelle, vous pouvez en passer un, en mettant une valeur vide ("").
- expiration : Détermine quand le cookie sera supprimé. Cette valeur doit être au format temps unix, c'est à dire le nombre de secondes écoulées depuis le 1er janvier 1970. En pratique, on utilisera la fonction time() pour connaître l'heure courante, à laquelle on ajoutera la durée de validation du cookie. Dans certains cas, la fonction mktime() peut s'avérer elle aussi très pratique.
- chemin : Désigne le répertoire (et ses sous-répertoires) de votre site pour lequel le cookie est valide. Autrement dit, vous pouvez utiliser un cookie uniquement pour le répertoire /membres/ en utilisant cet argument. La valeur par défaut est /
- domaine : Domaine sur lequel le cookie est valide. Cette valeur doit comporter deux points.
- securise : Si le cookie est envoyé par liaison sécurisée (https), la valeur doit être 1.
Exemple :
<?php // Envoi d'un cookie qui disparaitra après la fermeture du navigateur // Envoi d'un cookie qui restera présent 24 heures // Envoi d'un cookie qui s'effacera le 1er janvier 2006 ?>
Quelques précisions :
- La fonction setcookie() doit être utilisée avant tout envoi de données HTML vers le navigateur, même si ces données sont envoyées avec echo, print ou équivalent.
- Le cookie n'est pas accessible avant le prochain chargement de page.
- Avec PHP3, si vous envoyez plusieurs cookies de suite, les appels seront traités en ordre inverse. Avec PHP4, ils seront traités dans l'ordre.
- Il est possible d'utiliser des tableaux dans un cookie. Un nombre égal de cookies et d'éléments du tableau seront alors envoyés, mais tout se fait de façon transparente, puisque à la lecture un tableau sera créé. Il est quand même préférable d'utiliser les fonctions serialize() ou explode() pour envoyer ainsi qu'un seul cookie (fera l'objet d'un nouveau tutorial).
2- Lecture du cookie
Les cookies disponibles sont automatiquement stockés dans le tableau $_COOKIE. Selon la configuration de votre serveur (register_globals à on, déconseillé), ils sont également stockés dans la variable correspondant au nom du cookie.
<?php ?>
3- Suppression du cookie
Il arrive de vouloir supprimer certains cookies, par exemple lors d'une session pour se déconnecter.
Pour cela, il suffit de renvoyer le cookie grâce à la fonction setcookie() en spécifiant uniquement l'argument nom_du_cookie. Une autre possiblité est d'envoyer un cookie avec une date d'expiration dépassée.
<?php // on laisse uniquement le nom du cookie // date d'epiration dépassée ?>

Commentaires
1. Le vendredi 11 mars 2005 à 13:49, par Melia
2. Le lundi 14 mars 2005 à 17:11, par Kev
3. Le samedi 26 mars 2005 à 17:32, par Renan
4. Le mercredi 20 avril 2005 à 11:42, par lafy
5. Le vendredi 10 juin 2005 à 13:20, par billou
6. Le lundi 27 juin 2005 à 14:09, par Moum
7. Le mardi 23 août 2005 à 08:44, par cyrill
8. Le mercredi 21 septembre 2005 à 19:30, par yann
9. Le jeudi 19 janvier 2006 à 19:10, par Newbee
10. Le dimanche 10 septembre 2006 à 13:16, par hleb
11. Le dimanche 8 avril 2007 à 17:20, par Taharka
12. Le samedi 5 janvier 2008 à 00:35, par test qi
Ajouter un commentaire