Programmation PHP/Cookies
Introduction
modifierLes cookies sont téléchargés du serveur HTTP sur le PC client, stockés dans le répertoire du navigateur de l'utilisateur courant. Par exemple dans Windows 7[1] :
- Firefox :
C:\Users\%USERNAME%\AppData\Roaming\Mozilla\Firefox\Profiles\xxxxxxxx.default\cookies.sqlite
(lisible par exemple avec https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/). - Chrome
C:\Users\%USERNAME%\AppData\Local\Google\Chrome\User Data\Safe Browsing Cookies
. - Internet Explorer :
C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Cookies
.
- Ne pas mettre d'informations privées (mots de passe du serveur...) dans ces variables car elles sont stockées dans un fichier non protégé, sur le disque dur de l'utilisateur.
- Le cookie étant défini lors de l'affichage de l'en-tête HTTP, on ne peut pas le modifier puis le relire dans la même exécution. En effet, il est destiné à être lu après rechargement des pages.
- Ces cookies sont limités à 20 par domaine dans la configuration par défaut de PHP.
D'une manière générale, les cookies prennent la forme suivante :
Set-Cookie: nom=nouvelle_valeur; expires=date; path=/; domain=.exemple.org
- Le chemin (path) permet de ne les rendre opérants que dans certaines parties d'un site.
- Le domaine fonctionne même avec d'autres serveurs (voir pixel espion).
Syntaxe
modifier<?php
setcookie('cookie1', 'valeur1');
echo $_COOKIE['cookie1'];
Pour définir la durée du cookie (à 30 jours) et la page du site qui lui est associée :
<?php
setcookie('cookie2', 'valeur2', time() + 3600 * 24 * 30, '/');
Pour supprimer un cookie, on lui confère une durée de vie négative :
<?php
setcookie('cookie2', 'valeur2', time() - 1, '/');
Exemples
modifier<?php
if (isset($_COOKIE["cookie1"])) {
echo 'Authentifié';
} else {
echo 'Non authentifié';
}