Module 9 : Sessions et cookies en PHP**
Module 9 : Sessions et cookies en PHP
1. Sessions en PHP : Définition et utilisation
Démarrage de session :
session_start(); // Démarre la session
Stockage de données en session :
$_SESSION['nom'] = 'Jean Dupont';
Récupération de données stockées :
echo $_SESSION['nom']; // Affiche : Jean Dupont
Suppression d'une session :
unset($_SESSION['nom']);
session_destroy(); // Termine la session
2. Cookies en PHP : Définition et utilisation
Définition et envoi d’un cookie :
setcookie('username', 'JeanDupont', time() + (86400 * 30), "/"); // Expires
in 30 days
Récupération d’un cookie :
if(isset($_COOKIE['username'])) {
echo $_COOKIE['username']; // Affiche : JeanDupont
}
Suppression d’un cookie :
setcookie('username', '', time() - 3600, '/'); // Supprime le cookie
3. Gestion des sessions et cookies avec sécurité :
Régénération du ID de session :
session_regenerate_id(true); // Régénère l'ID de session avec une session
déjà existante
Vérification du cookie et de la session :
if (!isset($_SESSION['loggedin']) && !isset($_COOKIE['username'])) {
// Redirection ou message d'erreur si non connecté
}
4. Exercice : Création d’un formulaire de connexion avec session et cookies
Code de la page de connexion :
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if ($_POST['username'] === 'admin' && $_POST['password'] === '1234') {
$_SESSION['loggedin'] = true;
setcookie('username', $_POST['username'], time() + (86400 * 30),
'/');
header('Location: [Link]'); // Redirection vers une page de
bienvenue
} else {
echo "Identifiant ou mot de passe incorrect.";
}
}
Code de la page de bienvenue ([Link]) :
session_start();
if (!isset($_SESSION['loggedin']) && !isset($_COOKIE['username'])) {
header('Location: [Link]'); // Redirection vers la page de connexion
exit;
}
echo "Bienvenue, " . $_COOKIE['username'];
5. Protection contre les attaques CSRF (Cross-Site Request Forgery) :
Ajout de token CSRF :
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (!hash_equals($_SESSION['token'], $_POST['token'])) {
die('Accès non autorisé.');
}
}
$_SESSION['token'] = bin2hex(random_bytes(32));
Utilisation du token dans le formulaire :
<input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
6. Exercice : Ajout de la vérification CSRF à la connexion :
Code modifié dans le formulaire de connexion :
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (!hash_equals($_SESSION['token'], $_POST['token'])) {
die('Accès non autorisé.');
}
// Vérification de l'authentification et gestion des sessions/cookies
}
Ce module vous a permis de comprendre les sessions et cookies en PHP, leur fonctionnement, et
l’importance de leur gestion sécurisée, notamment en utilisant des tokens CSRF. Si vous avez besoin
d’approfondir ou de clarifications, n’hésitez pas à demander !