Les cookies
Dans ce tutorial, nous allons voir comment créer des cookies,
et surtout comment bien les manipuler.
Tout de suite, mettons les choses au clair.
En effet, beaucoup de personnes d'imaginent que les cookies sont des
petites bêtes malveillantes (alors que c'est
totalement faux), tout simplement parce qu'elles ne savent pas
exactement de quoi il s'agit.
Un cookie est un petit fichier texte (faisant
au maximum 65 Ko) stocké sur le disque dur du visiteur du site. Ce
fichier texte permet de sauvegarder diverses
informations concernant ce visiteur afin de pouvoir
les réutiliser (les informations) lors de la prochaine visite du
visiteur sur ce même site.
Par exemple, on pourrait très bien stocker dans ce cookie le nom
du visiteur et par la suite, afficher son nom
à chaque fois qu'il se connectera sur le site (ceci bien sur, s'il
n'efface pas les cookies de son disque dur).
Cependant, tout cela n'arrive pas par le saint esprit.
En effet, ceci n'est possible que si le visiteur à
entré lui-même ses informations dans un formulaire sur le site.
Les cookies sont stockés, selon votre navigateur Internet, à un
certain endroit de votre disque dur. Par exemple, avec un système
composé de Windows et du navigateur INTERNET
EXPLORER (le plus usité).
Dans cette configuration, les cookies sont stockés dans le répertoire C:WindowsTemporary
Internet Files comme ci-dessous :

Voyons à présent comment créer de tels cookies, grâce à la fonction
setcookie().
Soit alors la portion de code suivante :
<?php
// on définit une durée de vie de notre cookie (en secondes), donc un an dans notre cas
$temps = 365*24*3600;
// on envoie un cookie de nom pseudo portant la valeur LA GLOBULE
setcookie ("pseudo", "LA GLOBULE", time() + $temps);
?>
Explications :
Grâce à ce code, nous venons d'envoyer, chez le client (donc le
visiteur du site) un cookie de nom pseudo
portant la valeur LA GLOBULE.
De plus, time() retournant le nombre de
secondes écoulées depuis le 1er janvier 1970 jusqu'à l'instant présent,
nous imposons que le cookie ai une durée de vie de un an (soit en fait
l'instant présent plus un an, donc un an).
Enfin, maintenant, si le visiteur ne supprime pas ce cookie, et bien,
dans toutes les pages WEB de notre site, on pourra accéder à la
variable $pseudo qui contiendra la chaîne de
caractères LA GLOBULE.
En revanche, l'envoie d'un cookie ayant la même valeur pour tous les
visiteurs d'un site, ce n'est pas vraiment intéressant.
Supposons alors que sur une page de notre site WEB, nous souhaitons
faire en sorte que si le visiteur vient pour la première fois (ou qu'il
a supprimer ses cookies), et bien, il aurait alors, la possibilité de
saisir son nom dans un formulaire, ou bien s'il ne s'agit pas de sa
première visite, d'afficher tout simplement Bonjour puis son nom.
On aurait alors le code suivant pour notre page (par exemple index.php)
:
<html>
<head>
<title>Index du site</title>
<body>
<?
// on teste la déclaration de notre cookie
if (isset($_COOKIE['pseudo'])) {
echo 'Bonjour '.$_COOKIE['pseudo'].' !';
// si le cookie n'existe pas, on affiche un formulaire permettant au visiteur de saisir son nom
echo '<form action="./traitement.php" method="post">';
echo 'Votre nom : <input type = "texte" name = "nom"><br />';
echo '<input type = "submit" value = "Envoyer">';
}
else {
echo 'Notre cookie n\'est pas déclaré.';
}
?>
</body>
</html>
Et le code pour la page traitement.php :
<?php
If (isset($_POST['nom'])) {
// on définit une durée de vie de notre cookie (en secondes), donc un an dans notre cas
$temps = 365*24*3600;
// on envoie un cookie de nom pseudo portant la valeur de la variable $nom, c'est-à-dire la valeur qu'a saisi la personne qui a rempli le formulaire
setcookie ("pseudo", $_POST['nom'], time() + $temps);
// fonction nous permettant de faire des redirections
function redirection($url){
if (headers_sent()){
print('<meta http-equiv="refresh" content="0;URL='.$url.'">');
}
else {
header("Location: $url");
}
}
// on effectue une redirection vers la page d'accueil
redirection ('index.php');
}
else {
echo 'La variable du formulaire n\'est pas déclarée.';
}
?>
Attention !!!
Plusieurs conditions sont à respecter afin que l'utilisation des
cookies se passe au mieux :
- l'envoie d'un cookie doit être la première
fonction PHP que vous utilisez dans votre script, ce qui veut
dire que vous devez utiliser la fonction setcookie()
tout en haut de votre script (AUCUN AFFICHAGE ET
AUCUN CODE CODE HTML AVANT UN SETCOOKIE). Si d'autres fonctions
interviennent avant l'envoie du cookie, celui-ci ne fonctionnera pas.
- 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.
Note : Pour effacer un cookie, vous devez
lancer un cookie qui aura le même nom que le cookie que vous voulez
effacer, tout en lui donnant une valeur nulle (vous pouvez également
l'envoyer avec un temps de vie dépassé).