From a6995fbab56900b829687624c39d4c02e1f4b2df Mon Sep 17 00:00:00 2001
From: Freitas_Enzo
Date: Sun, 2 Nov 2025 19:42:11 +0100
Subject: [PATCH] first commit
---
README.md | 14 ++++++++
admin/add_article.php | 49 +++++++++++++++++++++++++++
admin/dashboard.php | 27 +++++++++++++++
admin/delete_article.php | 61 +++++++++++++++++++++++++++++++++
admin/edit_article.php | 73 ++++++++++++++++++++++++++++++++++++++++
admin/login.php | 47 ++++++++++++++++++++++++++
admin/logout.php | 10 ++++++
assets/css/style.css | 56 ++++++++++++++++++++++++++++++
dump_cms_simplifie.sql | 23 +++++++++++++
includes/db.php | 16 +++++++++
includes/footer.php | 6 ++++
includes/header.php | 16 +++++++++
public/404.php | 13 +++++++
public/article.php | 28 +++++++++++++++
public/index.php | 32 ++++++++++++++++++
15 files changed, 471 insertions(+)
create mode 100644 README.md
create mode 100644 admin/add_article.php
create mode 100644 admin/dashboard.php
create mode 100644 admin/delete_article.php
create mode 100644 admin/edit_article.php
create mode 100644 admin/login.php
create mode 100644 admin/logout.php
create mode 100644 assets/css/style.css
create mode 100644 dump_cms_simplifie.sql
create mode 100644 includes/db.php
create mode 100644 includes/footer.php
create mode 100644 includes/header.php
create mode 100644 public/404.php
create mode 100644 public/article.php
create mode 100644 public/index.php
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..5823376
--- /dev/null
+++ b/README.md
@@ -0,0 +1,14 @@
+# CMS Simplifié - Mini-Projet Développement Web
+
+## 1. Installation
+
+1. Installer un serveur local (XAMPP, WAMP, MAMP ou autre).
+2. Copier le dossier du projet `Visual_DM` dans le répertoire `htdocs` (ou équivalent).
+3. Créer la base de données et les tables via le fichier SQL fourni :
+ - Importer `dump_cms_simplifie.sql` dans phpMyAdmin ou via ligne de commande.
+4. Vérifier le fichier `includes/db.php` et adapter les informations de connexion si nécessaire :
+ ```php
+ $host = 'localhost';
+ $dbname = 'cms_simplifie';
+ $user = 'root';
+ $password = '';
\ No newline at end of file
diff --git a/admin/add_article.php b/admin/add_article.php
new file mode 100644
index 0000000..f915a7d
--- /dev/null
+++ b/admin/add_article.php
@@ -0,0 +1,49 @@
+prepare($sql);
+ $stmt->bindParam(':titre', $titre);
+ $stmt->bindParam(':contenu', $contenu);
+
+ if ($stmt->execute()) {
+ $message = "Article ajouté avec succès !";
+ } else {
+ $message = "Erreur lors de l'ajout de l'article.";
+ }
+}
+
+require '../includes/header.php';
+?>
+
+
+ Ajouter un article
+
+ '.$message.'
'; ?>
+
+
+
+
+
\ No newline at end of file
diff --git a/admin/dashboard.php b/admin/dashboard.php
new file mode 100644
index 0000000..a4c7e69
--- /dev/null
+++ b/admin/dashboard.php
@@ -0,0 +1,27 @@
+
+
+
+ Tableau de bord
+ Bienvenue, = htmlspecialchars($_SESSION['user_login']); ?> !
+
+
+
+
+
diff --git a/admin/delete_article.php b/admin/delete_article.php
new file mode 100644
index 0000000..402f90c
--- /dev/null
+++ b/admin/delete_article.php
@@ -0,0 +1,61 @@
+prepare($sql);
+ $stmt->bindParam(':id', $id, PDO::PARAM_INT);
+ $stmt->execute();
+ $article = $stmt->fetch(PDO::FETCH_ASSOC);
+
+ if (!$article) {
+ die("Article introuvable.");
+ }
+}
+
+if (isset($_POST['confirm']) && $_POST['confirm'] === 'Oui') {
+ $sql = "DELETE FROM articles WHERE id = :id";
+ $stmt = $pdo->prepare($sql);
+ $stmt->bindParam(':id', $id, PDO::PARAM_INT);
+
+ if ($stmt->execute()) {
+ $message = "Article supprimé avec succès !";
+ $article = null;
+ } else {
+ $message = "Erreur lors de la suppression.";
+ }
+}
+
+require '../includes/header.php';
+?>
+
+
+ Supprimer un article
+
+ '.$message.''; ?>
+
+
+ Voulez-vous vraiment supprimer l'article : "= htmlspecialchars($article['titre']) ?>" ?
+
+
+ Aucun article sélectionné ou article déjà supprimé.
+
+
+
+
\ No newline at end of file
diff --git a/admin/edit_article.php b/admin/edit_article.php
new file mode 100644
index 0000000..6d3e424
--- /dev/null
+++ b/admin/edit_article.php
@@ -0,0 +1,73 @@
+prepare($sql);
+ $stmt->bindParam(':id', $id, PDO::PARAM_INT);
+ $stmt->execute();
+ $article = $stmt->fetch(PDO::FETCH_ASSOC);
+
+ if (!$article) {
+ die("Article introuvable.");
+ }
+}
+
+if (isset($_POST['titre']) && isset($_POST['contenu'])) {
+ $titre = $_POST['titre'];
+ $contenu = $_POST['contenu'];
+
+ $sql = "UPDATE articles SET titre = :titre, contenu = :contenu WHERE id = :id";
+ $stmt = $pdo->prepare($sql);
+ $stmt->bindParam(':titre', $titre);
+ $stmt->bindParam(':contenu', $contenu);
+ $stmt->bindParam(':id', $id, PDO::PARAM_INT);
+
+ if ($stmt->execute()) {
+ $message = "Article modifié avec succès !";
+ $stmt = $pdo->prepare("SELECT * FROM articles WHERE id = :id");
+ $stmt->bindParam(':id', $id, PDO::PARAM_INT);
+ $stmt->execute();
+ $article = $stmt->fetch(PDO::FETCH_ASSOC);
+ } else {
+ $message = "Erreur lors de la modification.";
+ }
+}
+
+require '../includes/header.php';
+?>
+
+
+ Modifier un article
+
+ '.$message.''; ?>
+
+
+
+
+ Aucun article sélectionné.
+
+
+
+
\ No newline at end of file
diff --git a/admin/login.php b/admin/login.php
new file mode 100644
index 0000000..86214ca
--- /dev/null
+++ b/admin/login.php
@@ -0,0 +1,47 @@
+prepare($sql);
+ $stmt->bindParam(':login', $login);
+ $stmt->execute();
+ $user = $stmt->fetch(PDO::FETCH_ASSOC);
+
+ if ($user && password_verify($password, $user['password'])) {
+ $_SESSION['user_id'] = $user['id'];
+ $_SESSION['user_login'] = $user['login'];
+ header('Location: dashboard.php');
+ exit;
+ } else {
+ $error = "Identifiants incorrects.";
+ }
+}
+?>
+
+
+
+
+
+ Connexion Admin
+
+
+
+ Connexion Administration
+
+ '.$error.''; ?>
+
+
+
+
\ No newline at end of file
diff --git a/admin/logout.php b/admin/logout.php
new file mode 100644
index 0000000..4cf9bd2
--- /dev/null
+++ b/admin/logout.php
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/assets/css/style.css b/assets/css/style.css
new file mode 100644
index 0000000..1a0751f
--- /dev/null
+++ b/assets/css/style.css
@@ -0,0 +1,56 @@
+body {
+ font-family: Arial, sans-serif;
+ margin: 0;
+ padding: 0;
+ background-color: #f4f4f4;
+}
+
+header, footer {
+ background-color: #333;
+ color: white;
+ padding: 15px;
+ text-align: center;
+}
+
+main {
+ padding: 20px;
+}
+
+h2 {
+ color: #333;
+}
+
+article {
+ background-color: white;
+ padding: 15px;
+ margin-bottom: 10px;
+ border-radius: 5px;
+}
+
+a {
+ color: #007BFF;
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+form input, form textarea, form button {
+ width: 100%;
+ padding: 8px;
+ margin-top: 5px;
+ margin-bottom: 10px;
+}
+
+button {
+ background-color: #007BFF;
+ color: white;
+ border: none;
+ cursor: pointer;
+ border-radius: 3px;
+}
+
+button:hover {
+ background-color: #0056b3;
+}
\ No newline at end of file
diff --git a/dump_cms_simplifie.sql b/dump_cms_simplifie.sql
new file mode 100644
index 0000000..9b92c8f
--- /dev/null
+++ b/dump_cms_simplifie.sql
@@ -0,0 +1,23 @@
+CREATE DATABASE IF NOT EXISTS cms_simplifie;
+USE cms_simplifie;
+
+CREATE TABLE IF NOT EXISTS utilisateur (
+ id INT AUTO_INCREMENT PRIMARY KEY,
+ login VARCHAR(50) NOT NULL UNIQUE,
+ password VARCHAR(255) NOT NULL
+);
+
+INSERT INTO utilisateur (login, password)
+VALUES ('admin', '$2y$10$e0NR8I0sXfJ3R6qU5K4J6.u4TbT2H8bX6u5pL1lN3eWz8yFzNfR9O');
+
+CREATE TABLE IF NOT EXISTS articles (
+ id INT AUTO_INCREMENT PRIMARY KEY,
+ titre VARCHAR(255) NOT NULL,
+ contenu TEXT NOT NULL,
+ date_creation DATETIME NOT NULL
+);
+
+INSERT INTO articles (titre, contenu, date_creation)
+VALUES
+('Titre Exemple 1', 'Voici un texte d’introduction pour l’article 1...', NOW()),
+('Titre Exemple 2', 'Voici un texte d’introduction pour l’article 2...', NOW());
\ No newline at end of file
diff --git a/includes/db.php b/includes/db.php
new file mode 100644
index 0000000..4ed2827
--- /dev/null
+++ b/includes/db.php
@@ -0,0 +1,16 @@
+setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+
+} catch (PDOException $e) {
+ die("Erreur de connexion à la base de données : " . $e->getMessage());
+}
+?>
\ No newline at end of file
diff --git a/includes/footer.php b/includes/footer.php
new file mode 100644
index 0000000..5d54d7e
--- /dev/null
+++ b/includes/footer.php
@@ -0,0 +1,6 @@
+
+
+