Le principe
HTTP est sans mémoire. La session l'ajoute :
serveur → les données
Les données ne quittent jamais le serveur : c'est ce qui rend la session plus sûre qu'un cookie.
Recto-verso. À relire la veille. Le cours · Les exercices
HTTP est sans mémoire. La session l'ajoute :
Les données ne quittent jamais le serveur : c'est ce qui rend la session plus sûre qu'un cookie.
session_start(); // 1re LIGNE
$_SESSION["user"] = "Paul";
echo $_SESSION["user"];
$_SESSION = [];
session_destroy();session_start() sur chaque page concernée.
session_start() et header() doivent venir avant le moindre
caractère — même une ligne vide avant <?php.
headers already sentCause : la session passe par un cookie, donc par les en-têtes HTTP.
| GET | POST | |
|---|---|---|
| Où | URL | corps |
| Visible | oui | non |
| Partageable | oui | non |
| Pour | chercher | envoyer |
Aucun des deux n'est chiffré → HTTPS.
if ($_SERVER["REQUEST_METHOD"]
=== "POST") { … }
$x = trim($_POST["x"] ?? "");
strlen($mdp) < 6
filter_var($m, FILTER_VALIDATE_EMAIL)trim() sur le nom et l'email — jamais sur un mot de passe.
$_SESSION["visites"] =
($_SESSION["visites"] ?? 0) + 1;?? = « ou, si ça n'existe pas, alors… »
session_start();
if (!isset($_SESSION["user"])) {
header("Location: login.php");
exit(); // ← indispensable
}Jamais sur login.php → sinon
ERR_TOO_MANY_REDIRECTS.
exit()header("Location: …") n'arrête pas le script : il ajoute
seulement un en-tête.
Sans exit(), le code suivant s'exécute et peut envoyer la page
privée à un visiteur non connecté.
// login
$_SESSION["user"] = $login;
header("Location: accueil.php");
exit();
// logout
$_SESSION = [];
session_destroy();
header("Location: login.php");
exit();login.php | pas de garde |
accueil.php | garde |
logout.php | détruit |
header/footer | communs |
echo "<pre>";
print_r($_SESSION);
echo "</pre>";Vide → session_start() oublié.
Rempli mais refusé → clé mal orthographiée.
À retirer avant de rendre.
htmlspecialchars() avant tout affichage.strtolower() sur l'identifiant, pas sur le mot de passe.password_hash() /
password_verify().