Compare commits
13 Commits
9df48d9408
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 5a805e646b | |||
| ea5bc8f668 | |||
| 76aedeb57c | |||
| f402fc0192 | |||
| 656b7b9945 | |||
| 58f6d730ae | |||
| d24bc9d52f | |||
| 8ce52971a9 | |||
| 62cf15ab8b | |||
| 7181ead64e | |||
| 4fc2516bbc | |||
| b95935da80 | |||
| 0324f4f9df |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,4 +1,4 @@
|
|||||||
.pdo.php
|
php/pdo.php
|
||||||
|
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
|
|||||||
61
README.md
61
README.md
@@ -1 +1,60 @@
|
|||||||
Mini-Projet de Développement Web - CMS Simplifié
|
# 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
|
<?php
|
||||||
$serveur = "localhost";
|
require_once 'pdo.php';
|
||||||
$dbname = "my_sql_projet";
|
|
||||||
$user = "root";
|
|
||||||
$pass = "";
|
|
||||||
|
|
||||||
$login_saisi = "test";
|
$login_saisi = "test";
|
||||||
$password_saisi = "Ciel2025$";
|
$password_saisi = "Ciel2025$";
|
||||||
|
|
||||||
try {
|
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 = ?";
|
$sql = "SELECT * FROM utilisateur WHERE login = ?";
|
||||||
$stmt = $pdo->prepare($sql);
|
$stmt = $pdo->prepare($sql);
|
||||||
$stmt->execute([$login_saisi]);
|
$stmt->execute([$login_saisi]);
|
||||||
@@ -19,7 +13,11 @@ try {
|
|||||||
|
|
||||||
if ($utilisateur && password_verify($password_saisi, $utilisateur['password'])) {
|
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 {
|
} else {
|
||||||
print "Login ou mot de passe incorrect.";
|
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();
|
||||||
|
}
|
||||||
|
?>
|
||||||
@@ -9,4 +9,7 @@ CREATE TABLE utilisateur (
|
|||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
login VARCHAR(50) UNIQUE,
|
login VARCHAR(50) UNIQUE,
|
||||||
password VARCHAR(255)
|
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