Cours PHP : Les cookies en PDF (Intermédiaire)
Support pédagogique PDF pour maîtriser la persistance des données côté client avec PHP. Le protocole HTTP est sans état : chaque requête est indépendante et ne conserve pas le contexte du client, ce qui rend nécessaire l'utilisation de mécanismes de persistance tels que les cookies ou la gestion des sessions PHP. Ce document offre un tutoriel PHP cookies pragmatique, incluant des setcookie exemple, des bonnes pratiques de sécurité (sécurité cookies PHP) et des travaux pratiques exploitables sur un serveur Apache ou Nginx avec PHP.
PHP : Les cookies — éléments essentiels. Un cookie est une petite donnée persistante envoyée par le serveur via l'en-tête HTTP Set-Cookie et stockée côté client ; il contient un nom, une valeur et des attributs optionnels (expires, path, domain, secure, HttpOnly, SameSite). Les cookies permettent de conserver un état léger entre requêtes HTTP indépendantes — authentification, suivi d'activité, préférences ou gestion d'un panier basique. Le document comprend des exemples de code et des exercices pratiques pour expérimenter setcookie(), $_COOKIE et mettre en œuvre ces mécanismes de manière sécurisée et pragmatique.
🎯 Ce que vous allez apprendre
- Structure et rôle de l'en-tête
Set-Cookie— identification précise des composants (NOM=VALEUR; expires=DATE; path=...; domain=...; secure) et impact sur le comportement du navigateur. Construction et lecture manuelle de l'en-tête, conditions d'envoi et critères d'acceptation par le client. - Utilisation de
setcookie()en PHP — paramètres de la fonction (setcookie(name, value, expire, path, domain, secure)), contrainte d'appel avant tout affichage et implications sur l'envoi d'en-têtes. Mise en pratique : définir durée de vie, portée et domaine dans un script PHP. - Lecture et manipulation via
$_COOKIE— récupération des valeurs simples ou tableaux de cookies (ex:nom[]), vérification d'existence et parcours pour alimenter la logique applicative. - Gestion des restrictions et limites — refus ou suppression de cookies côté client, navigateurs sans support et conséquences sur l'expérience utilisateur. Conception d'alternatives accessibles et messages clairs lorsque les cookies ne sont pas disponibles.
- Sécurité des cookies — réduire les vecteurs d'attaque (XSS, CSRF) via
HttpOnly,Secure,SameSiteet validation côté serveur. Ne stocker en cookie que des données non sensibles ou des identifiants chiffrés/hachés. - Exemples pratiques et TP panier — étude de cas : scripts
marche.php,remplir.phpettotal.phppour implémenter un panier par cookies, gérer la mise à jour, la suppression et la totalisation.
📑 Sommaire du document
- Cours PHP : Les cookies
💡 Pourquoi choisir ce cours ?
Rédigé par Thierry VAIRA, formateur en développement web, ce support privilégie la mise en œuvre réelle plutôt que la seule théorie. Le contenu combine explications techniques sur les en-têtes HTTP et les paramètres de setcookie(), exemples fonctionnels et un projet de travaux pratiques (panier) prêt à tester. La présentation favorise l'expérimentation et une montée en compétence rapide, avec des repères pratiques pour la sécurité des applications web.
👤 À qui s'adresse ce cours ?
- Public cible : développeurs back-end ou étudiants en formation (BTS/LP) souhaitant consolider la gestion d'état côté client avec PHP, pour authentification simple, suivi ou panier.
- Prérequis : connaissance pratique de la syntaxe PHP (variables, includes), notions de requêtes HTTP et en-têtes, et accès à un environnement serveur pour exécuter les scripts et tests.
Compatibilité : exemples et syntaxes présentés compatibles avec PHP 7.x et PHP 8.x ; les différences potentielles entre versions sont signalées lorsque pertinent pour l'exécution ou la sécurité.
Le protocole HTTP et la nécessité des cookies
HTTP est sans état : chaque requête est traitée indépendamment, sans information intrinsèque sur les interactions précédentes. Les cookies réintroduisent un contexte minimal en stockant des paires nom/valeur côté client et en les renvoyant automatiquement au serveur selon les règles de domaine et de chemin. Dans les applications web modernes, les cookies complètent la gestion des sessions PHP en conservant un identifiant côté client tandis que les données sensibles résident sur le serveur. Ce rôle permet d'assurer continuité de navigation et personnalisation tout en imposant validation, chiffrement éventuel et durée de vie limitée pour réduire la surface d'attaque.
Le rôle des cookies dans le protocole HTTP
Les navigateurs envoient les en-têtes HTTP d'un client vers le serveur pour chaque requête. L'en-tête Set-Cookie permet au serveur de demander au navigateur de stocker une donnée qui sera jointe aux requêtes suivantes selon les attributs définis. Comprendre ce mécanisme est central pour implémenter un tutoriel PHP cookies utile : savoir quand un cookie est transmis, comment le navigateur gère les attributs path et domain, et quels comportements attendre en cas de redirections ou de requêtes cross-site. La gestion des sessions PHP repose souvent sur ce flux : un cookie stocke l'identifiant de session pendant que la session elle-même demeure côté serveur. Les exemples incluent des setcookie exemple typiques et des recommandations de sécurité cookies PHP pour éviter les fuites d'informations et les attaques courantes.
Cookies et bases de données : bonnes pratiques
Dans de nombreuses architectures, cookies et bases de données se complètent. Les cookies servent d'accroche légère côté client (identifiants, préférences), tandis que les données structurées et volumineuses sont conservées en base. Adopter ce schéma réduit l'exposition côté client et facilite la synchronisation multi-appareils.
Cookies vs Stockage Base de données
Utilisez un cookie pour conserver un identifiant ou des préférences non sensibles et stockez les détails métiers (panier complet, historique) en base de données. Avantages du cookie : rapidité, simplicité d'implémentation et persistance locale. Avantages du stockage en base : contrôle centralisé, facilité de révocation, intégrité et sauvegarde. Pour un panier : conserver un token en cookie et associer ce token à une table de paniers en MySQL permet de limiter les données exposées et d'assurer la cohérence. Validez systématiquement les données récupérées via cookie et évitez de placer des informations sensibles en clair.
Bonnes pratiques d'architecture
Concevoir l'utilisation des cookies autour de principes clairs : minimiser la quantité d'information côté client, chiffrer ou hacher les identifiants, appliquer HttpOnly et Secure selon le contexte, définir une politique de durée de vie et prévoir des messages accessibles en cas d'absence de cookies. En production, documenter les choix d'implémentation pour faciliter la maintenance et les audits de sécurité.
Cookies, PHP et MySQL
Les architectures réelles associent souvent un identifiant stocké en cookie à une table MySQL contenant les détails. Ce modèle limite les données exposées côté client et facilite la synchronisation et la récupération après expiration du cookie. Le document inclut un tutoriel montrant comment lier un identifiant de cookie à une table de paniers, valider les entrées côté serveur et éviter d'exposer des informations sensibles directement en cookie.
❓ Foire Aux Questions (FAQ)
Comment définir la durée d'expiration d'un cookie en PHP ? La durée se passe via le troisième paramètre de setcookie(), généralement en ajoutant un timestamp retourné par time() (ex: time() + 3600 pour une heure). Sans paramètre expire le cookie est de session et s'efface à la fermeture du navigateur.
Quels attributs influencent la portée et la sécurité d'un cookie ? Les paramètres path et domain restreignent l'envoi du cookie à certaines URLs, tandis que le flag secure impose la transmission uniquement via HTTPS; côté serveur il faut toujours valider et ne pas se reposer exclusivement sur la confiance des valeurs stockées en cookie.
Quelle est la différence entre un cookie et une session PHP ? Un cookie stocke des données côté client et est envoyé à chaque requête selon son domaine/path; une session PHP conserve les données côté serveur et utilise généralement un identifiant stocké côté client pour lier la session au visiteur. La session est préférable pour les données sensibles et la gestion centralisée de l'état. Pour aller plus loin, vous pouvez consulter notre Cours HTML/CSS/JavaScript en PDF pour mieux comprendre l'interaction avec le navigateur.