Par Valentin Brosseau / @c4software
Depuis le TP 2, les données sont rangées là où il faut : dans MySQL.
Mais votre site ne sait toujours rien du visiteur.
Question : « la liste des punitions », c'est laquelle des deux ?
La base.
La session est propre à un visiteur et disparait quand il s'en va.
Une donnée que tout le monde doit voir n'a rien à y faire.
session_start(); // Avant tout affichage
$_SESSION['last_phrase'] = "Je ne copie pas...";Après un formulaire : on redirige, on ne réaffiche pas.
$_SESSION['message'] = "Punition enregistrée !";
header('location: index.php?page=home');
die();Question : pourquoi rediriger plutôt qu'afficher directement ?
Recharger une page de traitement renvoie le formulaire.
Donc : deuxième enregistrement, et un troisième, et un quatrième…
Rediriger coupe court : il n'y a plus rien à renvoyer.
if (isset($_SESSION['message'])) {
echo $_SESSION['message'];
unset($_SESSION['message']);
}Sans le unset(), le message s'affiche à chaque chargement, toute la visite.
setcookie("theme", "sombre", time() + 3600);Question : le client peut le modifier… qu'a-t-on le droit d'y mettre ?
| Session | Cookie | |
|---|---|---|
| Stocké | Serveur | Client |
| Durée | La visite | Au choix |
| Confiance | Oui | Non |
Préférence d'affichage → cookie. Autorisation → jamais.
session_start() avant tout affichage, puis $_SESSION comme un tableau.header() + die(), les deux, toujours.Place au TP 🚀