From d4a982d80ee01395a6b034ee55aeaca2189c2fda Mon Sep 17 00:00:00 2001 From: s4msk0 Date: Sun, 2 Nov 2025 23:39:25 +0100 Subject: [PATCH] dernier modif --- README.md | 48 +++++++++++++++++++++++++ admin/ajouter.php | 40 +++++++++++---------- admin/{dashboard.php => board.php} | 40 +++++++++++---------- admin/login.php | 21 +++++++---- admin/logout.php | 17 ++++----- admin/modifier.php | 58 +++++++++++++++--------------- admin/supprimer.php | 30 ++++++++-------- public/index.php | 41 +++++++++++---------- 8 files changed, 182 insertions(+), 113 deletions(-) rename admin/{dashboard.php => board.php} (52%) diff --git a/README.md b/README.md index 223322c..b7da51c 100644 --- a/README.md +++ b/README.md @@ -45,4 +45,52 @@ Lancer l'image créée en le connectant au réseau précédemment créé docker run -d --name CMS_php -p 8080:80 --network=CMS-bridge cms_php:latest ``` +Pour éviter de lancer les commandes à chaque fois, un script launch-dockers.sh a executer en 'sudo' est disponible. +# Projet CMS Simplifié + +### Technologies utilisées + +Ce projet a été construit avec les technologies suivantes : + +![HTML5](https://img.shields.io/badge/HTML5-E34F26?style=for-the-badge&logo=html5&logoColor=white) +![CSS3](https://img.shields.io/badge/CSS3-1572B6?style=for-the-badge&logo=css3&logoColor=white) +![PHP](https://img.shields.io/badge/PHP-777BB4?style=for-the-badge&logo=php&logoColor=white) +![MySQL](https://img.shields.io/badge/MySQL-4479A1?style=for-the-badge&logo=mysql&logoColor=white) + +## Lancement des dockers MySql et Php + +### Création d'un réseau pour que les services docker puissent communiquer + +```bash +docker network create -d bridge CMS-bridge +``` + +### Build BDD + +Builder la BDD MySql avec le Dockerfile présent dans le répertoire bdd + +```bash +docker build -t cms_mysql . +``` + +Lancer l'image créée en le connectant au réseau précédemment créé + +```bash +docker run -d --name CMS_mysql -p 3306:3306 --network=CMS-bridge cms_mysql:latest +``` + +### Build PHP-Apache + +Builder PHP Apache avec le Dockerfile présent à la racine du projet + +```bash +docker build -t cms_php . +``` + +Lancer l'image créée en le connectant au réseau précédemment créé + +```bash +docker run -d --name CMS_php -p 8080:80 --network=CMS-bridge cms_php:latest +``` + Pour éviter de lancer les commandes à chaque fois, un script launch-dockers.sh a executer en 'sudo' est disponible. \ No newline at end of file diff --git a/admin/ajouter.php b/admin/ajouter.php index 4ff8268..fccadee 100644 --- a/admin/ajouter.php +++ b/admin/ajouter.php @@ -1,43 +1,45 @@ prepare('INSERT INTO articles (titre, contenu, date_creation) VALUES (:titre, :contenu, :date)'); + // Insertion sécurisée dans la base de données + $stmt = $pdo->prepare( + 'INSERT INTO articles (titre, contenu, date_creation) VALUES (:titre, :contenu, :date)' + ); $stmt->execute([ - ':titre' => $titre, - ':contenu' => $contenu, - ':date' => date('Y-m-d H:i:s'), + ':titre' => $titre, + ':contenu' => $contenu, + ':date' => date('Y-m-d H:i:s'), ]); - + // Redirection vers le tableau de bord après ajout header('Location: board.php'); exit; } } ?> - + - + Ajouter un article @@ -45,24 +47,24 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {

Ajouter un article

- +

- +

+
+ - - Annuler de l'anulation + + Annuler
- \ No newline at end of file + diff --git a/admin/dashboard.php b/admin/board.php similarity index 52% rename from admin/dashboard.php rename to admin/board.php index 89e69cc..e350c58 100644 --- a/admin/dashboard.php +++ b/admin/board.php @@ -1,13 +1,18 @@ query('SELECT * FROM articles ORDER BY date_creation DESC'); $articles = $stmt->fetchAll(); ?> - + - + Tableau de Bord @@ -15,31 +20,28 @@ $articles = $stmt->fetchAll(); +
-

Tableau de Bord de bordination

+

Tableau de Bord

Connecté en tant que - - - | Se déconnecter + + | Se déconnecter

-

- +

Gestion des articles

Ajouter un nouvel article
+

Vos articles publiés

- - +
@@ -51,13 +53,12 @@ $articles = $stmt->fetchAll(); - - - + + + @@ -67,3 +68,4 @@ $articles = $stmt->fetchAll(); + diff --git a/admin/login.php b/admin/login.php index 6692966..0348bf5 100644 --- a/admin/login.php +++ b/admin/login.php @@ -1,14 +1,19 @@ +

Connexion

+

+ -

+

+ diff --git a/admin/logout.php b/admin/logout.php index abd5ac2..50580ba 100644 --- a/admin/logout.php +++ b/admin/logout.php @@ -1,17 +1,18 @@ diff --git a/admin/modifier.php b/admin/modifier.php index 420bc62..ee19872 100644 --- a/admin/modifier.php +++ b/admin/modifier.php @@ -1,62 +1,62 @@ prepare('SELECT * FROM articles WHERE id = :id'); $stmt->execute([':id' => $id]); $article = $stmt->fetch(); -// Article est pas valide on retourne au tableau +// Si l'article n'existe pas, retour au tableau de bord if (!$article) { - header('Location: dashboard.php'); + header('Location: board.php'); exit; } - $errors = []; $titre = $article['titre']; $contenu = $article['contenu']; - +// Traitement du formulaire à la soumission if ($_SERVER['REQUEST_METHOD'] === 'POST') { $titre = trim($_POST['titre'] ?? ''); $contenu = trim($_POST['contenu'] ?? ''); - + // Vérification des champs obligatoires if ($titre === '' || $contenu === '') { $errors[] = 'Tous les champs sont obligatoires.'; } else { - - $u = $pdo->prepare('UPDATE articles SET titre = :titre, contenu = :contenu WHERE id = :id'); - $u->execute([ - ':titre' => $titre, - ':contenu' => $contenu, - ':id' => $id + // Mise à jour sécurisée dans la base de données + $stmt = $pdo->prepare( + 'UPDATE articles SET titre = :titre, contenu = :contenu WHERE id = :id' + ); + $stmt->execute([ + ':titre' => $titre, + ':contenu' => $contenu, + ':id' => $id ]); - - header('Location: dashboard.php'); + // Redirection vers le tableau de bord après modification + header('Location: board.php'); exit; } } ?> - + @@ -67,22 +67,24 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {

Modifier l'article

- +

-> + - +
+ + - Annuler + Annuler - \ No newline at end of file + diff --git a/admin/supprimer.php b/admin/supprimer.php index 9ae9ffa..31043cd 100644 --- a/admin/supprimer.php +++ b/admin/supprimer.php @@ -1,46 +1,46 @@ prepare('SELECT id, titre FROM articles WHERE id = :id'); $stmt->execute([':id' => $id]); $article = $stmt->fetch(); - +// Si l'article n'existe pas, retour au tableau de bord if (!$article) { header('Location: board.php'); exit; } - +// Traitement de la suppression if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['confirm']) && $_POST['confirm'] === 'yes') { - - $d = $pdo->prepare('DELETE FROM articles WHERE id = :id'); - $d->execute([':id' => $id]); + // Suppression sécurisée de l'article + $stmt = $pdo->prepare('DELETE FROM articles WHERE id = :id'); + $stmt->execute([':id' => $id]); } - + // Redirection après suppression ou annulation header('Location: board.php'); exit; } ?> - + @@ -51,14 +51,14 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {

Supprimer l'article

- +

Êtes-vous sûr de vouloir supprimer : ?

- - Annuler + Annuler + diff --git a/public/index.php b/public/index.php index 44076dd..70b5be4 100644 --- a/public/index.php +++ b/public/index.php @@ -1,12 +1,14 @@ query($sql); $articles = $result->fetchAll(); ?> - @@ -17,8 +19,9 @@ $articles = $result->fetchAll();
+
@@ -26,25 +29,27 @@ $articles = $result->fetchAll();

Articles Publiés

- Aucun article trouvé pour le moment.

"; - } else { - foreach ($articles as $a) { - echo ""; - } - } - ?> + +

Aucun article trouvé pour le moment.

+ + + + +
-

© - Un CMS simple et efficace

+

© - Un CMS simple et efficace

- \ No newline at end of file +
ID
- Modifier - | - Supprimer + Modifier | + Supprimer