PHP — Sessions et cookies
Sessions, cookies, messages flash et préférences utilisateur
Concepts Théoriques
HTTP est un protocole sans état — chaque requête est indépendante. Le serveur ne se souvient pas de qui vous êtes entre deux pages. Les sessions et cookies résolvent ce problème en maintenant un état entre les requêtes.
Les sessions
Une session est un espace de stockage côté serveur associé à un visiteur via un identifiant unique (cookie PHPSESSID).
Pour utiliser les sessions :
- Appeler session_start() en TOUT DÉBUT de chaque fichier (avant tout echo ou HTML)
- Stocker des données dans $_SESSION['clé'] = valeur
- Lire avec $_SESSION['clé']
- Supprimer avec unset($_SESSION['clé'])
- Détruire toute la session avec session_destroy()
Les données de session vivent sur le serveur — le client ne peut pas les falsifier. Elles expirent quand le navigateur est fermé ou après un délai d'inactivité.
Les cookies
Un cookie est un petit texte stocké côté client (dans le navigateur). Le serveur peut le lire à chaque requête.
setcookie('theme', 'dark', time() + 86400 * 30); crée un cookie "theme" avec la valeur "dark" qui expire dans 30 jours. On le lit avec $_COOKIE['theme'].
Différences session vs cookie :
- Session : côté serveur, sécurisé, expire à la fermeture du navigateur
- Cookie : côté client, visible par l'utilisateur, durée personnalisable
Les messages flash
Un message flash est un message affiché UNE SEULE FOIS après une action (ex: "Article créé avec succès !"). On le stocke en session, on l'affiche, puis on le supprime immédiatement.
> Bonne pratique : Utilisez les sessions pour l'authentification (chapitre 11) et les messages flash. Utilisez les cookies pour les préférences non sensibles (thème, langue).