Sessions
Extension de l’activité: Utilisation des sessions pour gérer les articles du mini-blog
Section titled “Extension de l’activité: Utilisation des sessions pour gérer les articles du mini-blog”Objectif
Section titled “Objectif”- Utiliser les sessions pour stocker et gérer une liste d’articles à travers différentes pages du mini-blog.
- Permettre aux utilisateurs de voir une liste d’articles persistante même en naviguant entre différentes pages du site ou en fermant et ouvrant le navigateur.
Instructions pour l’extension de l’activité
Section titled “Instructions pour l’extension de l’activité”Initialisation de la session
Section titled “Initialisation de la session”- Assurez-vous que chaque page commence par
session_start()pour pouvoir utiliser les sessions.
Ajout de fonctionnalités de session pour les articles
Section titled “Ajout de fonctionnalités de session pour les articles”- Implémentez la fonctionnalité de stockage des articles publiés dans une session.
- Modifiez le formulaire de soumission d’articles pour stocker les articles dans
$_SESSIONau lieu d’un tableau simple. - Modifier l’affichage des articles pour utiliser les articles stockés dans la session.
- Implémentez une fonctionnalité pour effacer tous les articles stockés en session.
Voir la correction
Code de base modifié pour inclure les sessions
Section titled “Code de base modifié pour inclure les sessions”Initialisation de la session
Section titled “Initialisation de la session”<?php session_start();?><!DOCTYPE html><html><head> <title>Mon Site Personnel</title> <link rel="stylesheet" type="text/css" href="css/style.css"></head><body> <header> <nav> <ul> <li><a href="index.php">Accueil</a></li> <li><a href="about.php">À propos</a></li> <li><a href="contact.php">Contact</a></li> <li><a href="blog.php">Blog</a></li> </ul> </nav> </header>Modification pour inclure les sessions et gérer les articles
Section titled “Modification pour inclure les sessions et gérer les articles”<?php session_start(); if (!isset($_SESSION['articles'])) { $_SESSION['articles'] = array(); } if ($_SERVER["REQUEST_METHOD"] == "POST" && !empty($_POST['titre']) && !empty($_POST['contenu'])) { $_SESSION['articles'][] = array("titre" => $_POST['titre'], "contenu" => $_POST['contenu']); }?><?php include 'header.php'; ?> <h1>Mini-Blog</h1> <form method="post" action="blog.php"> <input type="text" name="titre" placeholder="Titre de l'article" required><br> <textarea name="contenu" placeholder="Contenu de l'article" required></textarea><br> <input type="submit" value="Publier"> </form> <?php if (!empty($_SESSION['articles'])) { foreach ($_SESSION['articles'] as $article) { echo "<h3>" . htmlspecialchars($article['titre']) . "</h3>"; echo "<p>" . nl2br(htmlspecialchars($article['contenu'])) . "</p>"; } } ?> <a href="clear.php">Effacer tous les articles</a><?php include 'footer.php'; ?>Nouveau fichier pour effacer les articles en session
Section titled “Nouveau fichier pour effacer les articles en session”<?phpsession_start();unset($_SESSION['articles']); // Efface les articlesheader('Location: blog.php'); // Redirige vers la page principale du blogCorrection - repo
Section titled “Correction - repo”https://github.com/nn-teach/PHP-intro/tree/Sessions
Explications supplémentaires
Section titled “Explications supplémentaires”- Cet activité était un exemple. En générale on ne stockerait pas des articles de cette façon en session.
- On stockerait plutôt les articles en base de donnée ou éventuellement dans le localstorage
- Il est plus commun de stocker l’utilisateur connecté lorsque le site dispose d’un espace «utilisateur»