Compare commits
14 Commits
bd2f89943f
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 5a805e646b | |||
| ea5bc8f668 | |||
| 76aedeb57c | |||
| f402fc0192 | |||
| 656b7b9945 | |||
| 58f6d730ae | |||
| d24bc9d52f | |||
| 8ce52971a9 | |||
| 62cf15ab8b | |||
| 7181ead64e | |||
| 4fc2516bbc | |||
| b95935da80 | |||
| 0324f4f9df | |||
| 9df48d9408 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,4 +1,4 @@
|
||||
.pdo.php
|
||||
php/pdo.php
|
||||
|
||||
.DS_Store
|
||||
|
||||
|
||||
61
README.md
61
README.md
@@ -1 +1,60 @@
|
||||
Le gitignore est fais pour evite de montre les mdp ainsi que les dossier cache comme .DS_store sur mac
|
||||
# Mini-Projet : CMS Simplifié (PHP-SQL)
|
||||
|
||||
Ce projet est un système de gestion de contenu (CMS) simple réalisé en PHP pur et sql. Il utilise l'extension PDO pour des requêtes sécurisées vers une base de données MySQL.
|
||||
|
||||
L'application est divisée en deux parties :
|
||||
1. Une **Zone Publique** pour consulter les articles.
|
||||
2. Une **Zone Administration** protégée par mot de passe, qui permet la gestion complète (CRUD) des articles.
|
||||
|
||||
## Procédure d'installation
|
||||
|
||||
Pour installer et lancer ce projet en local, vous aurez besoin d'un environnement serveur (MAMP, XAMPP, WAMP, Docker, etc.) supportant PHP et MySQL.
|
||||
|
||||
|
||||
0. **Serveur**
|
||||
* Si vous n'avez pas de serveur pour accueillir le projet vous pouvez installer MAMP ici **[mamp.info](https://www.mamp.info)**
|
||||
* Téléchargez la version gratuite (l'icône de l'éléphant gris, pas MAMP PRO).
|
||||
|
||||
2. **Installer MAMP :**
|
||||
* Ouvrez le fichier `.pkg` que vous avez téléchargé et suivez les instructions.
|
||||
|
||||
3. **Démarrer le serveur :**
|
||||
* Allez dans votre dossier `Applications/MAMP/`.
|
||||
* Ouvrez l'application **MAMP.app** (l'éléphant gris).
|
||||
* Cliquez sur le bouton **"Start"**.
|
||||
|
||||
4. **Trouver le dossier `htdocs` :**
|
||||
* Le serveur MAMP ne peut lire que les fichiers qui sont dans son dossier web.
|
||||
* Ce dossier se trouve ici : `Applications/MAMP/htdocs/`
|
||||
* C'est dans **ce** dossier `htdocs` que vous devrez mettre le dossier du projet `my_sql_projet`.
|
||||
|
||||
5. **Accéder à la Base de Données (phpMyAdmin) :**
|
||||
* Sur la fenêtre de MAMP, cliquez sur **"WebStart"**.
|
||||
* Sur la page qui s'ouvre, allez dans **"Tools" -> "phpMyAdmin"**.
|
||||
|
||||
6. **Le Mot de Passe MAMP :**
|
||||
* MAMP utilise par défaut le mot de passe **`"root"`** pour son utilisateur de base de données `"root"`. Vous en aurez besoin à l'étape 3 de l'installation.
|
||||
|
||||
## 1. Code Source
|
||||
|
||||
Clonez ou téléchargez ce dépôt et placez le dossier `my_sql_projet` dans le répertoire web de votre serveur (ex: `htdocs/`).
|
||||
|
||||
2. **Base de Données**
|
||||
* Ouvrez votre outil de gestion de base de données (comme phpMyAdmin).
|
||||
* Créez une nouvelle base de données. Le nom attendu est `my_sql_projet`.
|
||||
* Sélectionnez cette base de données et importez le fichier `sql/tables.sql`. Ce script créera les tables `articles` et `utilisateur`, et insérera l'administrateur par défaut.
|
||||
|
||||
3. **Configuration de la Connexion**
|
||||
* Dans le dossier `php/`, trouvez le fichier `pdo.example.php`.
|
||||
* **Copiez-le** et **renommez** la copie en `pdo.php`.
|
||||
* Ouvrez `pdo.php` et modifiez la variable `$pass` pour y mettre votre propre mot de passe de base de données (ex: `"root"` pour MAMP).
|
||||
|
||||
4. **Lancement**
|
||||
* C'est terminé ! Vous pouvez maintenant accéder au site public via `http://localhost/my_sql_projet/` et à la page de connexion admin via `http://localhost/my_sql_projet/login.php`.
|
||||
|
||||
## 🔑 Identifiants de Connexion
|
||||
|
||||
Un compte administrateur est créé par défaut par le script `tables.sql` pour vous permettre de tester la zone d'administration.
|
||||
|
||||
* **Login :** `admin`
|
||||
* **Mot de passe :** `admin123` (ou celui que vous avez généré)
|
||||
|
||||
45
article.php
Normal file
45
article.php
Normal file
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
if ( !isset($_GET['id']) || !ctype_digit($_GET['id']) ) {
|
||||
die("Erreur 404 : L'article demandé est introuvable.");
|
||||
}
|
||||
|
||||
$id_article = $_GET['id'];
|
||||
require_once 'php/pdo.php';
|
||||
|
||||
$sql = "SELECT * FROM articles WHERE id = ?";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute([$id_article]);
|
||||
|
||||
$article = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
if ($article === false) {
|
||||
die("Erreur 404 : L'article demandé est introuvable.");
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr" dir="ltr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title><?php print htmlspecialchars($article['titre']); ?></title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<a href="index.php">← Retour à l'accueil</a>
|
||||
|
||||
<hr>
|
||||
|
||||
<article>
|
||||
<h1><?php print htmlspecialchars($article['titre']); ?></h1>
|
||||
|
||||
<div>
|
||||
<?php
|
||||
print nl2br(htmlspecialchars($article['contenu']));
|
||||
?>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
76
creation_article.php
Normal file
76
creation_article.php
Normal file
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
session_start();
|
||||
|
||||
if (!isset($_SESSION['user_id'])) {
|
||||
header('Location: login.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
|
||||
if (!empty($_POST['titre']) && !empty($_POST['contenu'])) {
|
||||
|
||||
$titre = $_POST['titre'];
|
||||
$contenu = $_POST['contenu'];
|
||||
|
||||
require_once 'php/pdo.php';
|
||||
|
||||
$sql = "INSERT INTO articles (titre, contenu, date_creation) VALUES (?, ?, NOW())";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute([$titre, $contenu]);
|
||||
|
||||
header('Location: dashboard.php');
|
||||
exit;
|
||||
|
||||
} else {
|
||||
$erreur_message = "Veuillez remplir le titre et le contenu.";
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr" dir="ltr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Ajouter un article - Admin</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<header>
|
||||
<h1>Ajouter un nouvel article</h1>
|
||||
<p>
|
||||
Connecté en tant que <?php print htmlspecialchars($_SESSION['user_login']); ?>
|
||||
| <a href="dashboard.php">Retour au Tableau de Bord</a>
|
||||
| <a href="logout.php">Se déconnecter</a>
|
||||
</p>
|
||||
</header>
|
||||
|
||||
<hr>
|
||||
|
||||
<main>
|
||||
|
||||
<?php if (isset($erreur_message)) : ?>
|
||||
<div>
|
||||
<p><?php print $erreur_message; ?></p>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<form action="creation_article.php" method="POST">
|
||||
<div>
|
||||
<label for="titre">Titre de l'article :</label><br>
|
||||
<input type="text" id="titre" name="titre">
|
||||
</div>
|
||||
<br>
|
||||
<div>
|
||||
<label for="contenu">Contenu :</label><br>
|
||||
<textarea id="contenu" name="contenu" rows="15" cols="80"></textarea>
|
||||
</div>
|
||||
<br>
|
||||
<div>
|
||||
<button type="submit">Publier l'article</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</main>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
69
dashboard.php
Normal file
69
dashboard.php
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
session_start();
|
||||
|
||||
if (!isset($_SESSION['user_id'])) {
|
||||
header('Location: login.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
require_once 'php/pdo.php';
|
||||
$sql = "SELECT * FROM articles ORDER BY date_creation DESC";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute();
|
||||
$articles = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr" dir="ltr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Tableau de Bord - Admin</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<header>
|
||||
<h1>Tableau de Bord</h1>
|
||||
<p>
|
||||
Connecté en tant que <?php print htmlspecialchars($_SESSION['user_login']); ?>
|
||||
| <a href="logout.php">Se déconnecter</a>
|
||||
</p>
|
||||
</header>
|
||||
|
||||
<hr>
|
||||
|
||||
<main>
|
||||
<h2>Gestion des articles</h2>
|
||||
<a href="creation_article.php">Ajouter un nouvel article</a>
|
||||
|
||||
<hr>
|
||||
|
||||
<h3>Vos articles publiés</h3>
|
||||
|
||||
<table border="1">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Titre</th>
|
||||
<th>Date de création</th>
|
||||
<th>Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($articles as $article) : ?>
|
||||
<tr>
|
||||
<td><?php echo $article['id']; ?></td>
|
||||
<td><?php echo htmlspecialchars($article['titre']); ?></td>
|
||||
<td><?php echo $article['date_creation']; ?></td>
|
||||
<td>
|
||||
<a href="modif.php?id=<?php echo $article['id']; ?>">Modifier</a>
|
||||
|
|
||||
<a href="supp.php?id=<?php echo $article['id']; ?>">Supprimer</a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</main>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
47
index.php
Normal file
47
index.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
require_once 'php/pdo.php';
|
||||
|
||||
$sql = "SELECT * FROM articles ORDER BY date_creation DESC";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute();
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr" dir="ltr">
|
||||
<head>
|
||||
<meta charset="UTF-8"> <title>Mon Blog</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Mini projet</h1>
|
||||
<p>Bienvenue voici les derniers articles :</p>
|
||||
|
||||
<hr>
|
||||
|
||||
<?php
|
||||
while ($article = $stmt->fetch(PDO::FETCH_ASSOC)) :
|
||||
?>
|
||||
|
||||
<article>
|
||||
<h2><?php print htmlspecialchars($article['titre']); ?></h2>
|
||||
|
||||
<p>
|
||||
<em>Publié le : <?php print $article['date_creation']; ?></em>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<?php
|
||||
print htmlspecialchars(substr($article['contenu'], 0, 200));
|
||||
?>...
|
||||
</p>
|
||||
|
||||
<a href="article.php?id=<?php print $article['id']; ?>">Lire la suite</a>
|
||||
</article>
|
||||
<hr>
|
||||
|
||||
<?php
|
||||
endwhile;
|
||||
?>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
71
login.php
Normal file
71
login.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
session_start();
|
||||
|
||||
if (isset($_SESSION['user_id'])) {
|
||||
header('Location: dashboard.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
require_once 'php/pdo.php';
|
||||
|
||||
$erreur_message = "";
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
|
||||
if (empty($_POST['login']) || empty($_POST['password'])) {
|
||||
$erreur_message = "Veuillez remplir le login et le mot de passe.";
|
||||
} else {
|
||||
$login_saisi = $_POST['login'];
|
||||
$password_saisi = $_POST['password'];
|
||||
|
||||
$sql = "SELECT * FROM utilisateur WHERE login = ?";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute([$login_saisi]);
|
||||
$utilisateur = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
if ($utilisateur && password_verify($password_saisi, $utilisateur['password'])) {
|
||||
|
||||
$_SESSION['user_id'] = $utilisateur['id'];
|
||||
$_SESSION['user_login'] = $utilisateur['login'];
|
||||
|
||||
header('Location: dashboard.php');
|
||||
exit;
|
||||
} else {
|
||||
$erreur_message = "Login ou mot de passe incorrect.";
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr" dir="ltr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Connexion - Admin</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Zone Admin</h1>
|
||||
|
||||
<?php
|
||||
if (!empty($erreur_message)) :
|
||||
?>
|
||||
<?php print $erreur_message; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<form action="login.php" method="POST">
|
||||
<div>
|
||||
<label for="login">Login :</label>
|
||||
<input type="text" id="login" name="login">
|
||||
</div>
|
||||
<div>
|
||||
<label for="password">Mot de passe :</label>
|
||||
<input type="password" id="password" name="password">
|
||||
</div>
|
||||
<div>
|
||||
<button type="submit">Se connecter</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
8
logout.php
Normal file
8
logout.php
Normal file
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
session_start();
|
||||
|
||||
session_destroy();
|
||||
|
||||
header('Location: login.php');
|
||||
exit;
|
||||
?>
|
||||
94
modif.php
Normal file
94
modif.php
Normal file
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
session_start();
|
||||
|
||||
if (!isset($_SESSION['user_id'])) {
|
||||
header('Location: login.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
require_once 'php/pdo.php';
|
||||
|
||||
if ( !isset($_GET['id']) || !ctype_digit($_GET['id']) ) {
|
||||
die("Erreur : ID invalide.");
|
||||
}
|
||||
$id_article = $_GET['id'];
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
|
||||
if (!empty($_POST['titre']) && !empty($_POST['contenu'])) {
|
||||
|
||||
$nouveau_titre = $_POST['titre'];
|
||||
$nouveau_contenu = $_POST['contenu'];
|
||||
|
||||
$sql = "UPDATE articles SET titre = ?, contenu = ? WHERE id = ?";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute([$nouveau_titre, $nouveau_contenu, $id_article]);
|
||||
|
||||
header('Location: dashboard.php');
|
||||
exit;
|
||||
|
||||
} else {
|
||||
$erreur_message = "Veuillez remplir le titre et le contenu.";
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$sql_select = "SELECT * FROM articles WHERE id = ?";
|
||||
$stmt_select = $pdo->prepare($sql_select);
|
||||
$stmt_select->execute([$id_article]);
|
||||
$article = $stmt_select->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
if ($article === false) {
|
||||
die("Erreur : Cet article n'existe pas.");
|
||||
}
|
||||
} catch (PDOException $e) {
|
||||
die("Erreur : " . $e->getMessage());
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr" dir="ltr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Modifier l'article - Admin</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<header>
|
||||
<h1>Modifier l'article</h1>
|
||||
<p>
|
||||
<a href="dashboard.php">← Retour au Tableau de Bord</a>
|
||||
| <a href="logout.php">Se déconnecter</a>
|
||||
</p>
|
||||
</header>
|
||||
|
||||
<hr>
|
||||
|
||||
<main>
|
||||
|
||||
<?php if (isset($erreur_message)) : ?>
|
||||
<div>
|
||||
<p><?php print $erreur_message; ?></p>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<form action="modif.php?id=<?php print $article['id']; ?>" method="POST">
|
||||
<div>
|
||||
<label for="titre">Titre de l'article :</label><br>
|
||||
<input type="text" id="titre" name="titre"
|
||||
value="<?php print htmlspecialchars($article['titre']); ?>">
|
||||
</div>
|
||||
<br>
|
||||
<div>
|
||||
<label for="contenu">Contenu :</label><br>
|
||||
<textarea id="contenu" name="contenu" rows="15" cols="80"><?php print htmlspecialchars($article['contenu']); ?></textarea>
|
||||
</div>
|
||||
<br>
|
||||
<div>
|
||||
<button type="submit">Mettre à jour l'article</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</main>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
26
pass_hash
26
pass_hash
@@ -1,26 +0,0 @@
|
||||
<?php
|
||||
$serveur = "localhost";
|
||||
$dbname = "my_sql_projet";
|
||||
$user = "root";
|
||||
$pass = "";
|
||||
|
||||
$login = "test";
|
||||
$password_clair = "Ciel2025$";
|
||||
|
||||
$password_hash = password_hash($password_clair, PASSWORD_DEFAULT);
|
||||
|
||||
try {
|
||||
$pdo = new PDO("mysql:host=$serveur;dbname=$dbname", $user, $pass);
|
||||
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
|
||||
$sql = "INSERT INTO utilisateur (login, password) VALUES (?, ?)";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
|
||||
$stmt->execute([$login, $password_hash]);
|
||||
|
||||
print "Utilisateur '$login' créé avec succès !";
|
||||
|
||||
} catch (PDOException $e) {
|
||||
print "Erreur d'insertion : " . $e->getMessage();
|
||||
}
|
||||
?>
|
||||
24
php/pass_hash.php
Normal file
24
php/pass_hash.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
require_once 'pdo.php';
|
||||
|
||||
$login = "utilisateur";
|
||||
$password_clair = "Ciel2025$";
|
||||
|
||||
$password_hash = password_hash($password_clair, PASSWORD_DEFAULT);
|
||||
|
||||
try {
|
||||
$sql = "INSERT INTO utilisateur (login, password) VALUES (?, ?)";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
|
||||
$stmt->execute([$login, $password_hash]);
|
||||
|
||||
print "$login créé avec succès !";
|
||||
|
||||
} catch (PDOException $e) {
|
||||
|
||||
if ($e->errorInfo[1] == 1062) {
|
||||
print "Nom d’utilisateur déjà utilisé. Merci de changer.";
|
||||
} else {
|
||||
print "Erreur d'insertion : " . $e->getMessage();
|
||||
}
|
||||
}
|
||||
@@ -1,16 +1,10 @@
|
||||
<?php
|
||||
$serveur = "localhost";
|
||||
$dbname = "my_sql_projet";
|
||||
$user = "root";
|
||||
$pass = "";
|
||||
require_once 'pdo.php';
|
||||
|
||||
$login_saisi = "test";
|
||||
$password_saisi = "Ciel2025$";
|
||||
|
||||
try {
|
||||
$pdo = new PDO("mysql:host=$serveur;dbname=$dbname", $user, $pass);
|
||||
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
|
||||
$sql = "SELECT * FROM utilisateur WHERE login = ?";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute([$login_saisi]);
|
||||
@@ -19,7 +13,11 @@ try {
|
||||
|
||||
if ($utilisateur && password_verify($password_saisi, $utilisateur['password'])) {
|
||||
|
||||
print "Connexion réussie ! Bienvenue, " . $utilisateur['login'];
|
||||
session_start();
|
||||
$_SESSION['user_id'] = $utilisateur['id'];
|
||||
$_SESSION['user_login'] = $utilisateur['login'];
|
||||
|
||||
print "Bienvenue, " . htmlspecialchars($utilisateur['login']);
|
||||
|
||||
} else {
|
||||
print "Login ou mot de passe incorrect.";
|
||||
14
php/pdo.example.php
Normal file
14
php/pdo.example.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
$serveur = "localhost";
|
||||
$dbname = "my_sql_projet";
|
||||
$user = "root";
|
||||
$pass = "vous devez mettre votre mdp ici";
|
||||
|
||||
try {
|
||||
$pdo = new PDO("mysql:host=$serveur;dbname=$dbname", $user, $pass);
|
||||
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
} catch (PDOException $e) {
|
||||
print "Erreur de connexion à la BDD : " . $e->getMessage();
|
||||
die();
|
||||
}
|
||||
?>
|
||||
@@ -10,3 +10,6 @@ CREATE TABLE utilisateur (
|
||||
login VARCHAR(50) UNIQUE,
|
||||
password VARCHAR(255)
|
||||
);
|
||||
|
||||
INSERT INTO utilisateur (login, password)
|
||||
VALUES ('admin', '$2y$10$6x.tcoBWiyaFYlS6zB4E3OQppSP6agShnCA4eX0OPYD.7acI7/4wu');
|
||||
80
supp.php
Normal file
80
supp.php
Normal file
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
session_start();
|
||||
|
||||
if (!isset($_SESSION['user_id'])) {
|
||||
header('Location: login.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
require_once 'php/pdo.php';
|
||||
|
||||
if ( !isset($_GET['id']) || !ctype_digit($_GET['id']) ) {
|
||||
die("Erreur : ID invalide.");
|
||||
}
|
||||
$id_article = $_GET['id'];
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
|
||||
if (isset($_POST['id']) && $_POST['id'] == $id_article) {
|
||||
|
||||
$sql = "DELETE FROM articles WHERE id = ?";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute([$id_article]);
|
||||
|
||||
header('Location: dashboard.php');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$sql_select = "SELECT titre FROM articles WHERE id = ?";
|
||||
$stmt_select = $pdo->prepare($sql_select);
|
||||
$stmt_select->execute([$id_article]);
|
||||
$article = $stmt_select->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
if ($article === false) {
|
||||
die("Erreur : Cet article n'existe pas.");
|
||||
}
|
||||
} catch (PDOException $e) {
|
||||
die("Erreur : " . $e->getMessage());
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr" dir="ltr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Supprimer l'article - Admin</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<header>
|
||||
<h1>Confirmer la suppression</h1>
|
||||
<p>
|
||||
<a href="dashboard.php">← Annuler et Retourner au Tableau de Bord</a>
|
||||
</p>
|
||||
</header>
|
||||
|
||||
<hr>
|
||||
|
||||
<main>
|
||||
|
||||
<p>Voulez-vous vraiment supprimer l'article suivant ?</p>
|
||||
<h2><?php print htmlspecialchars($article['titre']); ?></h2>
|
||||
<p>Cette action est irréversible.</p>
|
||||
|
||||
<form action="supp.php?id=<?php print $id_article; ?>" method="POST">
|
||||
<input type="hidden" name="id" value="<?php print $id_article; ?>">
|
||||
<button type="submit">
|
||||
OUI
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<br>
|
||||
<button type="submit">
|
||||
<a href="dashboard.php">NON</a>
|
||||
</button>
|
||||
|
||||
</main>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user