46 lines
2.8 KiB
Markdown
46 lines
2.8 KiB
Markdown
# 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.
|
|
|
|
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é)
|
|
|
|
## 🏛️ Architecture du Projet
|
|
|
|
* **Langage :** PHP pur (orienté script, sans framework).
|
|
* **Base de Données :** MySQL.
|
|
* **Connexion :** L'extension **PDO** est utilisée pour toutes les interactions avec la base de données.
|
|
* **Sécurité :**
|
|
* **Mots de passe :** Hachage systématique avec `password_hash()` et vérification avec `password_verify()`, comme exigé.
|
|
* **Injections SQL :** Prévention totale grâce à l'utilisation exclusive de **requêtes préparées** (avec `prepare()` et `execute()`).
|
|
* **Failles XSS :** Protection lors de l'affichage des données avec `htmlspecialchars()`.
|
|
* **Zone Admin :** Toutes les pages d'administration (`dashboard.php`, `creer_article.php`, etc.) sont protégées et vérifient l'existence d'une `$_SESSION` active, redirigeant vers `login.php` si l'utilisateur n'est pas authentifié.
|
|
* **Gestion des Erreurs :** La page `article.php` gère les ID invalides ou inexistants en affichant un message d'erreur, comme demandé. |