From 686646929d2f30ea96f9e5df561dbc90547a3e9e Mon Sep 17 00:00:00 2001 From: apon Date: Sat, 1 Nov 2025 19:27:22 +0100 Subject: [PATCH] Premier commit --- article.php | 26 +++++++++++++++++++++++++ css/style.css | 22 +++++++++++++++++++++ dashboard.php | 26 +++++++++++++++++++++++++ docker-compose.yaml | 35 ++++++++++++++++++++++++++++++++++ index.php | 18 ++++++++++++++++++ login.php | 35 ++++++++++++++++++++++++++++++++++ logout.php | 5 +++++ modifier.php | 40 +++++++++++++++++++++++++++++++++++++++ src/ajouter.php | 29 ++++++++++++++++++++++++++++ src/includes/db.php | 23 ++++++++++++++++++++++ src/includes/footer.php | 6 ++++++ src/includes/header.php | 16 ++++++++++++++++ src/test.php | 2 ++ src/test_connexion.php | 3 +++ src/test_utilisateurs.php | 22 +++++++++++++++++++++ supprimer.php | 34 +++++++++++++++++++++++++++++++++ 16 files changed, 342 insertions(+) create mode 100644 article.php create mode 100644 css/style.css create mode 100644 dashboard.php create mode 100644 docker-compose.yaml create mode 100644 index.php create mode 100644 login.php create mode 100644 logout.php create mode 100644 modifier.php create mode 100644 src/ajouter.php create mode 100644 src/includes/db.php create mode 100644 src/includes/footer.php create mode 100644 src/includes/header.php create mode 100644 src/test.php create mode 100644 src/test_connexion.php create mode 100644 src/test_utilisateurs.php create mode 100644 supprimer.php diff --git a/article.php b/article.php new file mode 100644 index 0000000..e029876 --- /dev/null +++ b/article.php @@ -0,0 +1,26 @@ +404 - Article non trouvé"; + require_once __DIR__ . '/includes/footer.php'; + exit; +} + +$id = (int) $_GET['id']; +$stmt = $pdo->prepare("SELECT * FROM articles WHERE id = ?"); +$stmt->execute([$id]); +$article = $stmt->fetch(); + +if (!$article) { + http_response_code(404); + echo "

404 - Article non trouvé

"; +} else { + echo "

{$article['titre']}

"; + echo "

{$article['contenu']}

"; + echo "Publié le {$article['date_creation']}"; +} + +require_once __DIR__ . '/includes/footer.php'; diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..b0c70e7 --- /dev/null +++ b/css/style.css @@ -0,0 +1,22 @@ +body { + font-family: Arial, sans-serif; + margin: 40px; + background: #f9f9f9; + color: #333; +} +header, footer { + text-align: center; + margin-bottom: 20px; +} +a { + color: #007bff; + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +form input, form textarea { + width: 100%; + padding: 8px; + margin-top: 5px; +} diff --git a/dashboard.php b/dashboard.php new file mode 100644 index 0000000..5d6182e --- /dev/null +++ b/dashboard.php @@ -0,0 +1,26 @@ +Bienvenue, {$_SESSION['user']} !"; +echo "

➕ Ajouter un article | 🚪 Déconnexion

"; + +$stmt = $pdo->query("SELECT * FROM articles ORDER BY date_creation DESC"); +echo "

Vos articles :

"; +echo ""; + +require_once __DIR__ . '/includes/footer.php'; diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..29c330b --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,35 @@ +version: "3.8" + +services: + db: + image: mysql:8.0 + container_name: cms_db + restart: unless-stopped + environment: + MYSQL_ROOT_PASSWORD: rootpassword + MYSQL_DATABASE: cms + MYSQL_USER: cmsuser + MYSQL_PASSWORD: cmspassword + volumes: + - db_data:/var/lib/mysql + - ./sql:/docker-entrypoint-initdb.d:ro # exécutera les .sql à l'initialisation + ports: + - "3306:3306" + + web: + image: php:8.2-apache + container_name: cms_web + depends_on: + - db + volumes: + - ./src:/var/www/html + ports: + - "8080:80" + environment: + DB_HOST: db + DB_NAME: cms + DB_USER: cmsuser + DB_PASS: cmspassword + +volumes: + db_data: diff --git a/index.php b/index.php new file mode 100644 index 0000000..519f240 --- /dev/null +++ b/index.php @@ -0,0 +1,18 @@ +#query("SELECT id, titre, SUBSTRING(contenu, 1, 150) AS extrait, date_creation + FROM articles ORDER BY date_creation DESC LIMIT 10"); + +echo "

Derniers articles

"; + +while ($row = $stmt->fetch()) { + echo "
"; + echo "

{$row['titre']}

"; + echo "

{$row['extrait']}...

"; + echo "Publié le {$row['date_creation']}"; + echo "

"; +} + +require_once __DIR__ . '/includes/footer.php'; diff --git a/login.php b/login.php new file mode 100644 index 0000000..409c8db --- /dev/null +++ b/login.php @@ -0,0 +1,35 @@ +prepare("SELECT * FROM utilisateur WHERE login = ?"); + $stmt->execute([$login]); + $user = $stmt->fetch(); + + if ($user && password_verify($password, $user['password'])) { + $_SESSION['user'] = $user['login']; + header("Location: dashboard.php"); + exit; + } else { + echo "

Identifiants incorrects

"; + } +} +?> + +

Connexion administrateur

+
+
+

+ +
+

+ + +
+ + diff --git a/logout.php b/logout.php new file mode 100644 index 0000000..7649023 --- /dev/null +++ b/logout.php @@ -0,0 +1,5 @@ +prepare("UPDATE articles SET titre=?, contenu=? WHERE id=?"); + $stmt->execute([$titre, $contenu, $id]); + echo "

✅ Article mis à jour !

"; +} + +$stmt = $pdo->prepare("SELECT * FROM articles WHERE id=?"); +$stmt->execute([$id]); +$article = $stmt->fetch(); +?> + +

Modifier un article

+
+
+

+
+

+ +
+ + diff --git a/src/ajouter.php b/src/ajouter.php new file mode 100644 index 0000000..a976a38 --- /dev/null +++ b/src/ajouter.php @@ -0,0 +1,29 @@ +prepare("INSERT INTO articles (titre, contenu, date_creation) VALUES (?, ?, NOW())"); + $stmt->execute([$titre, $contenu]); + echo "

✅ Article ajouté !

"; +} +?> + +

Ajouter un article

+
+
+

+
+

+ +
+ + diff --git a/src/includes/db.php b/src/includes/db.php new file mode 100644 index 0000000..db44c87 --- /dev/null +++ b/src/includes/db.php @@ -0,0 +1,23 @@ + PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, +]; + +try { + $pdo = new PDO($dsn, $user, $pass, $options); + // echo "Connexion réussie !"; // tu peux tester si tu veux +} catch (PDOException $e) { + die("Erreur de connexion : " . $e->getMessage()); +} diff --git a/src/includes/footer.php b/src/includes/footer.php new file mode 100644 index 0000000..7ba0fbf --- /dev/null +++ b/src/includes/footer.php @@ -0,0 +1,6 @@ +
+ + + diff --git a/src/includes/header.php b/src/includes/header.php new file mode 100644 index 0000000..cbd7bcf --- /dev/null +++ b/src/includes/header.php @@ -0,0 +1,16 @@ + + + + + CMS Simplifié + + + +
+

📰 CMS Simplifié

+ +
+
diff --git a/src/test.php b/src/test.php new file mode 100644 index 0000000..a19a350 --- /dev/null +++ b/src/test.php @@ -0,0 +1,2 @@ +query("SELECT id, login FROM utilisateur"); + + $users = $stmt->fetchAll(); + + if (count($users) > 0) { + echo "

👤 Liste des utilisateurs :

"; + echo ""; + } else { + echo "⚠️ Aucun utilisateur trouvé dans la table."; + } +} catch (PDOException $e) { + echo "❌ Erreur SQL : " . $e->getMessage(); +} diff --git a/supprimer.php b/supprimer.php new file mode 100644 index 0000000..2f50823 --- /dev/null +++ b/supprimer.php @@ -0,0 +1,34 @@ +prepare("DELETE FROM articles WHERE id=?"); + $stmt->execute([$id]); + echo "

✅ Article supprimé.

Retour au tableau de bord

"; + require_once __DIR__ . '/includes/footer.php'; + exit; +} +?> + +

Supprimer l’article

+

Es-tu sûr de vouloir supprimer cet article ?

+
+ + Annuler +
+ +