Semaine 3 - Jour 4 : Sessions et Cookies

Qu'est-ce qu'une session ?

Sessions : Mémoire côté serveur
Une session permet de stocker des informations sur un utilisateur pendant qu'il navigue sur votre site. Les données sont stockées sur le serveur, pas sur l'ordinateur du visiteur.

Fonctionnement :
1. L'utilisateur visite le site
2. PHP génère un ID de session unique
3. Cet ID est envoyé au navigateur (cookie PHPSESSID)
4. Les données sont stockées sur le serveur

Exemple concret : Quand vous vous connectez sur un site, votre nom d'utilisateur est stocké en session. Vous restez connecté sur toutes les pages jusqu'à la déconnexion.

1. session_start() et $_SESSION

Démarrer une session

<?php // session_exemple.php // TOUJOURS appeler session_start() en PREMIER // Avant tout code HTML ou echo ! session_start(); // Maintenant on peut utiliser $_SESSION echo "Session démarrée !"; echo "<br>ID de session : " . session_id(); ?>
Attention : session_start() doit être appelé AVANT tout output HTML, même un simple espace ou saut de ligne !

2. Stocker et lire des données

Page 1 : Stocker des données

<?php // page1.php - Stocker des données session_start(); // Stocker des informations $_SESSION['prenom'] = 'Jean'; $_SESSION['nom'] = 'Dupont'; $_SESSION['role'] = 'admin'; $_SESSION['connecte'] = true; echo "Données stockées en session !"; ?>

Page 2 : Lire les données

<?php // page2.php - Lire les données session_start(); // Lire les informations if (isset($_SESSION['prenom'])) { echo "Bonjour " . htmlspecialchars($_SESSION['prenom']) . " !"; } ?>
Résultat attendu :
Bonjour Jean !
Nom complet : Dupont
Rôle : admin

3. Cookies : $_COOKIE et setcookie()

Cookies : Mémoire côté client

Un cookie est un petit fichier texte stocké sur l'ordinateur du visiteur.

<?php // Créer un cookie simple setcookie('prenom', 'Jean'); // Cookie qui expire dans 7 jours $expiration = time() + (7 * 24 * 60 * 60); setcookie('utilisateur', 'Jean Dupont', $expiration); // Cookie avec options de sécurité setcookie( 'theme', 'sombre', time() + (30 * 24 * 60 * 60), '/', '', true, // Secure (HTTPS) true // HttpOnly ); ?>

4. Différence Sessions vs Cookies

Critère Sessions Cookies
Stockage Sur le serveur Sur l'ordinateur du visiteur
Sécurité Plus sécurisé Moins sécurisé
Taille Illimitée 4 Ko max
Durée de vie Jusqu'à fermeture navigateur Jusqu'à expiration définie
Utilisation Données sensibles Préférences

Exemple : Panier d'achat simple

<?php // panier.php - Système de panier simple session_start(); // Initialiser le panier s'il n'existe pas if (!isset($_SESSION['panier'])) { $_SESSION['panier'] = []; } // Ajouter un produit au panier if (isset($_POST['ajouter'])) { $produit_id = $_POST['produit_id'] ?? 0; $nom = $_POST['nom'] ?? ''; $prix = $_POST['prix'] ?? 0; // Vérifier si le produit existe déjà if (isset($_SESSION['panier'][$produit_id])) { $_SESSION['panier'][$produit_id]['quantite']++; } else { $_SESSION['panier'][$produit_id] = [ 'nom' => $nom, 'prix' => $prix, 'quantite' => 1 ]; } } ?>
Fonctionnalités :
  • Ajouter des produits avec quantité automatique
  • Afficher le contenu avec calcul du total
  • Supprimer un produit individuel
  • Vider tout le panier
  • Les données persistent entre les pages

Règle de sécurité

  • Sessions : Pour les données sensibles (ID utilisateur, rôle, panier)
  • Cookies : Pour les préférences non sensibles (langue, thème, "se souvenir")
  • Ne JAMAIS stocker de mot de passe ou données sensibles dans un cookie
  • Toujours utiliser htmlspecialchars() sur les données de cookies
Froggiesplaining :


Objectifs de ce cours :
✅ Comprendre la différence entre sessions et cookies
✅ Utiliser session_start() et $_SESSION
✅ Créer et lire des cookies avec setcookie() et $_COOKIE
✅ Gérer un panier d'achat simple
✅ Savoir quand utiliser sessions vs cookies

Points clés à retenir :
• Les sessions stockent les données sur le serveur (sécurisé)
• Les cookies stockent les données chez le client (moins sécurisé)
• session_start() doit être appelé avant tout HTML
• setcookie() doit aussi être appelé avant tout HTML
• Les cookies sont disponibles au prochain chargement de page
• Utiliser sessions pour données sensibles, cookies pour préférences
• Toujours utiliser htmlspecialchars() sur les données affichées
• Pour supprimer un cookie, définir une date d'expiration passée

Analogie de Froggie :
Sessions = Ma mémoire à court terme : Je me souviens de toi tant que tu es dans ma mare (site web). Stocké dans mon cerveau (serveur) - personne ne peut y accéder !

Cookies = Ma mémoire à long terme : Je te donne un petit nénuphar (cookie) que tu gardes chez toi. Quand tu reviens, tu me le montres : "Ah oui, je me souviens de toi !"

Exercice pratique :
1. Créez deux fichiers : page1.php et page2.php
2. Dans page1.php, utilisez session_start() et stockez votre nom en session
3. Dans page2.php, utilisez session_start() et affichez le nom stocké
4. Créez un cookie pour sauvegarder une préférence de thème
5. Testez la persistance des données entre les pages

Froggie explain

GitHub - eCrea