6.Le langage PHP
6.16.Les cookies
6.16.1.Introduction
Les cookies sont des fichiers que le serveur demande au client d'écrire sur son disque dur et qui permettent à un script de sauvegarder des variables liées à l'utilisateur.
On peut par exemple vouloir savoir combien de fois une personne est venue sur votre site pour lui proposer à la dixième visite de s'inscrire à une mailing-list.
Mais attention l'utilisation des cookies est à prendre avec des pincettes ! Plusieurs risques sont liés à l'utilisation des cookies:
|
Les cookies ne doivent donc pas être utilisés pour des informations importantes. Une utilisation qui peut être faite consiste à remplir automatiquement un champ login qui a déjà été rempli précédemment par l'utilisateur (quoique maintenant cela est intégré aux navigateurs). Si le cookie est absent, l'utilisateur entrera manuellement le login.
6.16.2.Les cookies (avec PHP)
Il est important de savoir que la gestion du cookie doit se faire avant d'écrire une donnée dans le document HTML, attention aux espaces malencontreusement écris au début du fichier.
En PHP, nous pouvons écrire et lire dans un cookie très simplement.
La demande de génération du cookie se fait par la commande setCookie().
Tous les cookies ainsi définis sont systématiquement retournées au script PHP et accéssibles dans le tableau $_COOKIE[].
Pour affecter plusieurs valeurs à un seul cookie, il suffit que le nom du cookie soit suivi de [].
Voici maintenant les paramètres de la fonction setCookie():
int setCookie(string $name, string $value, int $expire, string $path, string $domain, int $secure);
seul le paramètre name est obligatoire.
int setCookie(string $name, string $value, int $expire, string $path, string $domain, int $secure);
seul le paramètre name est obligatoire.
|
Par exemple:
va créer un cookie accessible par $_COOKIE["login"], celui-ci est valide pendant 3600 secondes.
setCookie("login","toto",time()+3600); |
![]() |
|
6.16.3.Exemple de script PHP utilisant des cookies (écriture du cookie)
Ici nous allons faire un espèce de caddie utilisant des cookies. Attention, c'est pas une bonne idée pour un vrai caddie car quelqu'un qui refuserait les cookies ne pourrait pas utiliser ce script.
Le premier fichier que l'on appelera cookie_init.php servira à mettre à 0 les cookies.
|
<?php
setCookie("panier[pomme]", 0); setCookie("panier[poire]", 0); setCookie("panier[peche]", 0); setCookie("panier[banane]", 0); header("Location: cookie_ajout.php"); ?> |
6.16.4.Exemple de script PHP utilisant des cookies (lecture et mise à jour du cookie)
Ce second script est l'interface du site, on met à jour le cookie juste avant d'afficher l'état du panier.
|
<?php
// Lecture du cookie $panier = $_COOKIE["panier"]; switch ($_GET["ajout"]) { case "pomme": $panier["pomme"]++; setCookie("panier[pomme]",$panier["pomme"]); break; case "poire": $panier["poire"]++; setCookie("panier[poire]",$panier["poire"]); break; case "peche": $panier["peche"]++; setCookie("panier[peche]",$panier["peche"]); break; case "banane": $panier["banane"]++; setCookie("panier[banane]",$panier["banane"]); break; } ?> <html> <head> <title>Le marché</title> </head> <body bgcolor="#FFFFFF"> <table border="4" cellspacing="4" cellpadding="4" align="center"> <tr align="center"> <td>Ajouter</td> <td>Votre commande</td> </tr> <tr align="center"> <td><a href="cookie_ajout.php?ajout=pomme">1Kg pommes</a> (1E)</td> <td><?echo $panier["pomme"]?>Kg pomme(s)</td> </tr> <tr align="center"> <td><a href="cookie_ajout.php?ajout=poire">1Kg poire</a> (1,5E)</td> <td><?echo $panier["poire"]?>Kg poire(s)</td> </tr> <tr align="center"> <td><a href="cookie_ajout.php?ajout=peche">1Kg pêche</a> (2E)</td> <td><?echo $panier["peche"]?>Kg pêche(s)</td> </tr> <tr align="center"> <td><a href="cookie_ajout.php?ajout=banane">1Kg banane</a> (1E)</td> <td><?echo $panier["banane"]?>Kg banane(s)</td> </tr> </table> <p align="center"><a href="cookie_init.php">vider mon panier</a></p> <p align="center"><a href="cookie_calcul.php">calculer le total</a></p> </body> </html> |
6.16.5.Exemple de script PHP utilisant des cookies (suite et fin)
Ce troisième script (cookie_calcul.php) calcule et affiche le prix total du panier.
|
<?php
$panier = $_COOKIE["panier"]; $total = 0; $total += $panier["pomme"]*1; $total += $panier["poire"]*1.5; $total += $panier["peche"]*2; $total += $panier["banane"]*1; ?> <html> <head> <title>Le total du panier</title> </head> <body bgcolor="#FFFFFF"> <p align="center">Le total de votre panier: <?echo $total?> E.</p> <p align="center"><a href="cookie_ajout.php">Modifier mon panier</a></p> <p align="center"><a href="cookie_init.php">Vider mon panier</a></p> </body> </html> |




cookie_init.php
