Chapitre 13 : Sessions et Cookies
Apprenez à utiliser les sessions et cookies en PHP pour gérer les connexions utilisateurs et stocker des données temporaires.
1. Introduction
Lorsque vous créez une application web, il est souvent nécessaire de mémoriser certaines informations entre les différentes pages : l'identité d'un utilisateur connecté, ses préférences, ou le contenu de son panier. Pour cela, PHP propose deux mécanismes : les cookies et les sessions.
3. Les sessions
Les sessions permettent de stocker des données sur le serveur, associées à un utilisateur via un identifiant unique. Elles sont plus sécurisées que les cookies.
Démarrer une session
session_start();
?>
Créer une variable de session
session_start();
$_SESSION["pseudo"] = "Ahmed";
?>
Lire une variable de session
session_start();
echo $_SESSION["pseudo"];
?>
Supprimer une variable ou toute la session
unset($_SESSION["pseudo"]);
// Supprimer toutes les variables et détruire la session
session_unset();
session_destroy();
4. Comparaison : Cookies vs Sessions
| Caractéristique | Cookies | Sessions |
|---|---|---|
| Stockage | Dans le navigateur | Sur le serveur |
| Sécurité | Moins sécurisé | Plus sécurisé |
| Taille max | Environ 4 Ko | Limite serveur |
| Expiration | Spécifiée manuellement | Fin de session ou manuelle |
| Utilisation | Préférences utilisateur | Authentification, paniers |
5. Exemple pratique
Voici un exemple complet de connexion simulée avec une session :
// login.php
session_start();
if ($_POST["pseudo"] === "admin" && $_POST["password"] === "1234") {
$_SESSION["connected"] = true;
echo "Bienvenue admin !";
} else {
echo "Identifiants invalides.";
}
?>
<form action="login.php" method="post">
<input type="text" name="pseudo" placeholder="Votre pseudo">
<input type="password" name="password" placeholder="Mot de passe">
<button type="submit">Se connecter</button>
</form>
6. Gestion avancée des sessions
PHP offre des options avancées pour personnaliser le comportement des sessions :
Changer le nom de session
session_name("MON_SESS_ID");
session_start();
?>
Définir le chemin de sauvegarde
Configurer la durée de vie d'une session
Régénérer l'identifiant de session
7. Sécurité des sessions et cookies
- Utiliser toujours
session_start()au début de la page. - Activer les options
secureethttponlypour les cookies :setcookie("token", "valeur", [
"expires" => time() + 3600,
"path" => "/",
"secure" => true,
"httponly" => true,
"samesite" => "Strict"
]); - Ne jamais stocker de données sensibles dans un cookie ou une session sans chiffrement.
8. Astuce : mémoriser un utilisateur
Pour une option « Se souvenir de moi », combinez session + cookie avec un token sécurisé côté serveur.
Stocker le token côté BDD, et comparer à celui du cookie lors de la reconnexion automatique.
9. Exercices proposés
- Créer une page de connexion avec session PHP.
- Afficher un message personnalisé à l'utilisateur connecté.
- Créer une page de déconnexion.
- Créer un cookie qui enregistre la langue choisie par l'utilisateur.
10. À retenir
- Cookies : stockage client – Sessions : stockage serveur
- Sessions = plus sécurisé, bon pour authentification
session_start()est toujours requis- Éviter les données sensibles dans les cookies
- Sécuriser vos applications avec
httponly,secureetsession_regenerate_id()
11. Ce que vous apprendrez ensuite
Dans le chapitre 14, nous allons explorer la manipulation de fichiers avec PHP. Vous apprendrez à lire, écrire et gérer des fichiers sur le serveur.