Les cookies PHP

Attention, depuis PHP 5.5.0, certaines extensions SQL sans doute utilisées dans ce tutoriel peuvent être obsolètes et seront supprimées dans le futur, vous devez donc adapter les codes! Exemples ici.
Un cookie dans le langage PHP na rien à voir avec les gâteaux de grand mère (ça c'est dit !). Un cookie est un fichier créé par le site que vous consultez (programmé par le webmaster) et implanté dans l'ordinateur du client si celui-ci l'autorise. Un cookie contient généralement des données qui permettent par exemple de reconnaitre un utilisateur de votre site (membre) et de le connecter automatiquement. C'est le principe que j'utilise dans mon système de commentaire qui vous évite ainsi de retaper sans cesse les mêmes informations quand vous le ré-utilisez.

Comment créer un cookie

Pour créer un cookie, PHP met à disposition une fonction nommé setcookie() qui peut prendre plusieurs paramètres.
bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, 
string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )
En version plus simple :
setcookie(nom_du_cookie,valeur_du_cookie,expiration_du_cookie,chemin_sur_le_serveur,
domaine,sécurisation,protocole_http);
nom_du_cookie : Correspond au nom du cookie.
valeur_du_cookie : Correspond à la valeur du cookie. Cette valeur est stockée sur l'ordinateur du client alors évitez de stockez des informations importantes.
expiration_du_cookie : Correspond au temps après lequel le cookie expire. Ce "temps" utilise le timestamp Unix donc des secondes. Si celui-ci n'est pas précisé, le cookie est supprimé à la fin de la sessions.
chemin_sur_le_serveur : Correspond au chemin sur le serveur sur lequel le cookie sera disponible. Si la valeur est '/', le cookie sera disponible sur l'ensemble du domaine. Si la valeur est '/dossier1/', le cookie sera uniquement disponible dans le répertoire /dossier1/ ainsi que tous ses sous-répertoires.
domaine : Correspond au domaine où le cookie est disponible.
sécurisation : Indique si le cookie doit uniquement être transmis à travers une connexion sécurisée HTTPS depuis le client.
protocole_http : Lorsque ce paramètre vaut TRUE, le cookie ne sera accessible que par le protocole HTTP. Cela signifie que le cookie ne sera pas accessible via des langages de scripts, comme Javascript.

Je vous rassure tout de suite, vous n'êtes pas obligé d'utiliser tout les paramètres et bon nombre de webmaster n'utilise que les 3 premiers et c'est ce que nous allons voir ici.
<?php
//valeur du coockie
$valeur = 'Vive moi!';
//on créé un simple cookie nommé "moncookie"
setcookie("moncookie", $valeur);
//on créé un cookie nommé "moncookie" avec une expiration d'une heure
setcookie("moncookie", $valeur, time()+3600);
?>
Vous pouvez également inclure directement la valeur du cookie sans être obligé d'utiliser une variable.
<?php
//on créé un simple cookie nommé "moncookie" qui expire dans une heure
setcookie("moncookie", "Vive moi!", time()+3600);
?>
setcookie() : la fonction pour créer le cookie.
moncookie : le nom que je donne au cookie.
Vive moi! : la valeur du cookie.
time() : fonction permettant de récupérer le timestamp actuel. Le timestamp appelé aussi timestamp unix est une fonction qui permet d'obtenir le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit GMT.
+3600 : ajoute 3600 secondes au timestamp donc 1 heure.

Note : La fonction setcookie() doit être utilisée avant tout envoi de données HTML ou fonctions comme echo(),print ou printf().

Lecture d'un cookie

Pour lire un cookie c'est très simple, on utilise la variable prédéfinie $_COOKIE ou $HTTP_COOKIE_VARS (depuis PHP 4.1.0 ou supérieur) avec en paramètre le nom du cookie $_COOKIE['nom_du_cookie'] ou $HTTP_COOKIE_VARS['nom_du_cookie'] ou plus simplement $moncookie (si registar_globals est à "on" dans php.ini).
<?php
//valeur du coockie
$valeur = 'Vive moi!';
//on créé un simple cookie nommé "moncookie"
setcookie("moncookie", $valeur);
//on affiche le cookie
echo $_COOKIE['moncookie'];
//ou
echo $HTTP_COOKIE_VARS['moncookie'];
//ou
echo $moncookie;
?>
Note : Le contenu d'un cookie ne peut être lut que si vous avez changé de page ou si vous avez rechargé la page!

Détruire un cookie

Pour supprimer un cookie on utilise la fonction setcookie() avec en paramètre le nom du cookie à détruire.
<?php
//on détruit le cookie nommé moncookie
setcookie('moncookie');
?>
Une autre méthode consiste à définir une date d'expiration dépassée.
<?php
//on détruit le cookie nommé moncookie
setcookie('moncookie', '', 0);
?>

Vérifier l'existance d'un cookie

<?php
if(isset($_COOKIE['moncookie'])){
echo 'Le cookie existe.';
}
else{
echo 'Le cookie n\'existe pas!';
}
?>


Voir/déposer un commentaire (0) | Signaler un problème