6 Commits
v1.0 ... main

Author SHA1 Message Date
Safouane Bazzi
e13b7dacb5 Mise à jour du README complet 2025-11-03 16:18:51 +01:00
Safouane Bazzi
065034b186 Ajout : fichier SQL de la base cms_simplifie 2025-11-03 15:36:55 +01:00
Safouane Bazzi
a0fa7ddcb4 Mise à jour du README (version finale simplifiée) 2025-11-02 18:52:10 +01:00
Safouane Bazzi
873adaddaa Mise à jour du README (version finale simplifiée) 2025-11-02 18:47:23 +01:00
Safouane Bazzi
e67fe24f6a Mise à jour du README (version finale simplifiée) 2025-11-02 18:44:47 +01:00
Safouane Bazzi
6dc6fa3204 Nettoyage : suppression du fichier auth.php inutilisé 2025-10-21 22:13:57 +02:00
3 changed files with 179 additions and 60 deletions

147
README.md
View File

@@ -1,101 +1,128 @@
# Mini-Projet de Développement Web CMS Simplifié # README CMS Simplifié
## Présentation du projet ## Présentation
Ce mini-projet a été réalisé dans le cadre du module **Développement Web** (BTS CIEL 2ᵉ année). Ce mini-projet a été réalisé dans le cadre du module **Développement Web (BTS CIEL 2ᵉ année)**.
Lobjectif était de créer un **mini CMS** (Content Management System) simplifié permettant : Lobjectif est de créer un petit site de **gestion darticles (mini CMS)**.
- la **connexion sécurisée** dun administrateur ; Un administrateur peut se connecter, ajouter, modifier ou supprimer des articles.
- la **création**, **modification** et **suppression** darticles (CRUD) ; Les données sont stockées dans une base **MySQL**.
- laffichage des données stockées en base **MySQL**.
Le projet est réalisé **sans framework**, uniquement avec les langages vus en cours :
**HTML, CSS, Bootstrap, PHP (PDO), et SQL**.
--- ---
## Technologies utilisées ## Technologies utilisées
| Technologie | Utilisation | | Technologie | Utilisation |
|--------------|--------------| |--------------|-------------|
| **HTML5** | Structure des pages | | **HTML** | Structure des pages |
| **CSS3 / Bootstrap 5** | Mise en forme et design responsive (thème noir & or) | | **CSS / Bootstrap 5** | Mise en forme et design (thème noir et or) |
| **PHP (Sessions, PDO)** | Connexion, sécurité et interaction avec MySQL | | **PHP (PDO)** | Connexion à la base de données et gestion des pages dynamiques |
| **MySQL** | Base de données pour les utilisateurs et articles | | **MySQL** | Stockage des utilisateurs et des articles |
| **Docker** | Conteneurs PHP/Apache et MySQL | | **Git / Gitea** | Sauvegarde du projet |
| **Git / Gitea** | Gestion de version et hébergement du projet |
--- ---
## Structure du projet ## Structure du projet
cms-simplifie/ cms-simplifie/
├── public/ ├── public/
│ ├── assets/ │ ├── assets/
│ │ └── style.css → Design global (thème noir & or) │ │ └── style.css
│ ├── add.php → Page dajout dun article │ ├── add.php
│ ├── edit.php → Page de modification dun article │ ├── edit.php
│ ├── delete.php → Page de suppression dun article │ ├── delete.php
│ ├── admin.php → Tableau de bord (gestion des articles) │ ├── admin.php
│ ├── login.php → Page de connexion administrateur │ ├── login.php
│ ├── logout.php → Déconnexion │ ├── logout.php
│ ├── article.php → Lecture dun article │ ├── article.php
│ └── index.php → Accueil (affichage des articles) │ └── index.php
├── inc/ ├── inc/
│ └── db.php → Connexion PDO sécurisée à MySQL │ └── db.php
├── scripts/ → (optionnel, outils ou scripts SQL) ├── cms_simplifie.sql ← Base de données exportée
├── .env.example ← Exemple de configuration
├── .env.example Exemple de configuration (sans mot de passe) ├── .gitignore Exclut les fichiers sensibles (.env)
── .gitignore → Exclut .env et fichiers sensibles ── README.md
├── stack.bibli.yaml / Dockerfile → Configuration Docker
└── README.md → Ce fichier
--- ---
## Fonctionnalités principales ## Fonctionnalités principales
- Connexion dun utilisateur (admin) avec vérification du mot de passe haché.
- Gestion complète des articles (**CRUD**) : créer, lire, modifier, supprimer. - Connexion de ladministrateur avec un **mot de passe haché**
- Interface dadministration simple et claire. - **Ajout, modification et suppression** darticles
- Design **noir & or** pour une ambiance moderne et élégante. - **Affichage** des articles sur la page daccueil
- Sécurisation via **sessions PHP** et **requêtes préparées PDO**. - Thème sombre avec couleurs **noir et or**
- Aucune donnée sensible visible dans le code source. - **Aucune donnée sensible** visible sur Gitea
--- ---
## Sécurité ## Sécurité
- Les identifiants MySQL sont stockés dans **`.env`**, jamais dans le code.
- Le fichier `.gitignore` empêche toute fuite de `.env`. - Les identifiants MySQL sont stockés dans un fichier **.env** *(non visible sur Gitea)*
- Les mots de passe sont **hachés** avec `password_hash()` et vérifiés avec `password_verify()`. - Connexion sécurisée avec **PDO** et **requêtes préparées**
- Connexion à la base via **PDO** pour éviter les injections SQL. - Mots de passe stockés avec `password_hash()` et vérifiés avec `password_verify()`
- Le fichier **.gitignore** empêche denvoyer le fichier `.env` sur Gitea
--- ---
## Lancer le projet en local ## Exécution du projet en local
### Étapes : Étape 1 — Ouvrir le dossier du projet
1⃣ Démarrer les conteneurs Docker : Télécharger ou cloner le projet depuis Gitea :
```bash
git clone https://gitea.lasallesaintdenis.com/safouane.bazzi/cms-simplifie.git
docker stack deploy -c stack.bibli.yaml cms Puis ouvrir le dossier cms-simplifie dans VS Code ou un autre éditeur.
Étape 2 — Préparer le fichier .env
2Copier le fichier .env.example pour créer ton .env personnel : Copier le fichier .env.example
cp .env.example .env Le coller à la racine du projet
Le renommer en .env
3Modifier le fichier .env pour y mettre tes identifiants MySQL : Modifier les informations selon la configuration MySQL locale :
DB_HOST=mysql DB_HOST=127.0.0.1
DB_NAME=cms_simplifie DB_NAME=cms_simplifie
DB_USER=root DB_USER=root
DB_PASS=tonmotdepasse DB_PASS=ton_mot_de_passe
Étape 3 — Créer la base de données MySQL
Ouvrir DBeaver (ou phpMyAdmin)
Créer une nouvelle base de données appelée cms_simplifie
Importer le fichier cms_simplifie.sql (fourni avec le projet)
Ce fichier contient les tables articles et utilisateur, avec des données dexemple.
Étape 4 — Lancer le serveur PHP
Dans le terminal (dans le dossier du projet) :
php -S localhost:8000 -t public
4⃣ Accéder au site localement : Si le port 8000 est déjà utilisé :
php -S localhost:8080 -t public
Étape 5 — Ouvrir le site dans un navigateur
Accéder à ladresse suivante :
👉 http://localhost:8000 👉 http://localhost:8000
(ou 8080 selon le port choisi)
5⃣ Tester la connexion à la base : Étape 6 — Connexion à ladministration
👉 http://localhost:8000/test-db.php
Identifiants de test :
Login : admin
Mot de passe : admin123
Le mot de passe est haché dans la base de données et napparaît nulle part dans le code.

92
cms_simplifie.sql Normal file
View File

@@ -0,0 +1,92 @@
/*M!999999\- enable the sandbox mode */
-- MariaDB dump 10.19 Distrib 10.11.14-MariaDB, for debian-linux-gnu (x86_64)
--
-- Host: localhost Database: cms_simplifie
-- ------------------------------------------------------
-- Server version 9.4.0
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `articles`
--
DROP TABLE IF EXISTS `articles`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `articles` (
`id` int NOT NULL AUTO_INCREMENT,
`titre` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
`contenu` text COLLATE utf8mb4_general_ci NOT NULL,
`date_creation` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `articles`
--
LOCK TABLES `articles` WRITE;
/*!40000 ALTER TABLE `articles` DISABLE KEYS */;
INSERT INTO `articles` VALUES
(21,'vvzvzuievzieuvzivi','evezvzvezvzvz','2025-11-03 08:33:06'),
(22,'ooeoeoeoeo','eooeoeoeoeo','2025-11-03 08:33:22'),
(23,'fefefefef','efefefefe','2025-11-03 08:33:26'),
(24,'ff','efefefefe','2025-11-03 08:33:31'),
(25,'fefefefe','fefefefeffefe','2025-11-03 08:33:35'),
(26,'ieie','ieieieieieiei','2025-11-03 08:33:39'),
(27,'eiei','eieieieie','2025-11-03 08:33:42');
/*!40000 ALTER TABLE `articles` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `utilisateur`
--
DROP TABLE IF EXISTS `utilisateur`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `utilisateur` (
`id` int NOT NULL AUTO_INCREMENT,
`login` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
`password` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `login` (`login`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `utilisateur`
--
LOCK TABLES `utilisateur` WRITE;
/*!40000 ALTER TABLE `utilisateur` DISABLE KEYS */;
INSERT INTO `utilisateur` VALUES
(4,'admin','$2y$10$Pt77dtmFJDXj1bzfYkTIXOAjOOGV4ZRGNyPjEIn3YJn53kPPQiXv2');
/*!40000 ALTER TABLE `utilisateur` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Dumping routines for database 'cms_simplifie'
--
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2025-11-03 11:51:53

View File