Skip to content

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”
  • 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é”
  • 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 $_SESSION au 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”
header.php
<?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”
blog.php
<?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”
clear.php
<?php
session_start();
unset($_SESSION['articles']); // Efface les articles
header('Location: blog.php'); // Redirige vers la page principale du blog

https://github.com/nn-teach/PHP-intro/tree/Sessions

  • 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»