Introduction
L'authentification joue un rôle fondamental dans la sécurité des applications web modernes. Un système efficace et sécurisé garantit que seules les personnes autorisées peuvent accéder aux ressources sensibles. Dans cet article, nous allons expliquer comment mettre en place un système d'authentification simple mais performant en utilisant PHP et MySQL.
Le résultat final

Image description

Image description

Image description

check github for code source : https://github.com/hamza-nasser-youss/Grp-3/tree/main

Technologies utilisées :
Définitions:
PHP (Hypertext Preprocessor) est un langage de script côté serveur spécialement conçu pour le développement web. Il permet de créer des pages web dynamiques, c’est-à-dire des pages dont le contenu peut changer en fonction des actions de l’utilisateur ou des données récupérées en temps réel. PHP est largement utilisé grâce à sa simplicité, sa flexibilité, et sa compatibilité avec de nombreux serveurs web.
MySQL, quant à lui, est un système de gestion de base de données relationnelle (SGBDR). Il permet de stocker, organiser, modifier et récupérer des données de manière efficace. Il est souvent utilisé pour gérer des données structurées comme des utilisateurs, des produits, des commentaires, etc.
Le modèle MVC (Modèle-Vue-Contrôleur) est une architecture logicielle qui permet de séparer les différentes responsabilités d'une application web(les donnees,la logique,le vue).Cette séparation facilite la maintenance, la réutilisation du code et améliore l’organisation générale du projet. Dans ce contexte, l’utilisation du modèle MVC permet de développer un système d’authentification de manière claire, modulable et évolutive.
Ensemble, PHP et MySQL forment une combinaison puissante pour développer des applications web dynamiques et interactives. PHP s’occupe de la logique du site, tandis que MySQL gère les données.
Créer un système d'authentification est une étape essentielle dans la construction d'applications web sécurisées. PHP et MySQL sont deux outils puissants et accessibles qui permettent d'y parvenir facilement. Voici un guide étape par étape pour mettre en place une base solide.

✅ Pré-requis
Avant de commencer, assurez-vous d’avoir les éléments suivants :
Un serveur local installé : XAMPP, MAMP ou WAMP (avec PHP intégré).
MySQL installé et fonctionnel.
Des connaissances de base en PHP et SQL (lecture, insertion de données, etc.).
🛠️ Etape 1 : Création de la base de données
Commencez par créer une base de données, par exemple : login_system.
Ensuite, créez une table appelée users avec la structure suivante :

create database login_system;
use login_system;
CREATE TABLE users (
usersId int primary key auto_increment not null,
usersName varchar(50) not null,
usersEmail varchar(50) not null,
usersUid varchar(50) not null,
usersPwd varchar(255) not null
);
Architecture de projet

Image description

1-Creation de dossiers et fichier nécessaires Rendez-vous sur votre machine et créez un dossier nommé exo10

2-Connection à la base de données avec PDO : La creation de libraries/Database.php :

Image description

Image description

Le fichier Database.php encapsule la connexion et la manipulation de base de données en PHP avec PDO :

Connexion à MySQL
→ À l'initialisation, le constructeur établit une connexion sécurisée avec PDO et gère les erreurs.

query($sql)
→ Prépare une requête SQL pour exécution.

bind($param, $value, $type)
→ Lie des valeurs aux paramètres SQL en détectant automatiquement le bon type de donnée (int, bool, string...).

execute()
→ Exécute la requête préparée.

resultSet()
→ Récupère plusieurs résultats sous forme d'objets PHP.

single()
→ Récupère un seul résultat (utile pour les recherches par ID ou email par exemple).

rowCount()
→ Retourne le nombre de lignes affectées par la dernière requête (ex : pour vérifier un SELECT, INSERT, etc).

3-La création de controllers/Users.php :

Image description

Dans ce fichier controllers/Users.php, nous gérons l'authentification des utilisateurs en PHP MVC à travers ces fonctions principales :

register()
→ Gère l'inscription d'un utilisateur : elle nettoie les données entrées, valide les champs (email, mot de passe, etc.), vérifie que l'utilisateur n'existe pas déjà, puis enregistre les informations après avoir hashé le mot de passe.

login()
→ Authentifie un utilisateur : elle vérifie les données envoyées, recherche l'utilisateur en base de données, puis crée une session si les identifiants sont valides.

createUserSession($user)
→ Crée la session utilisateur après un login réussi, en sauvegardant les informations importantes dans $_SESSION.

logout()
→ Déconnecte l'utilisateur en supprimant la session existante et redirige vers la page d'accueil.

4-La création de helpers/session_helper.php :

Image description

Le fichier session_helper.php simplifie la gestion des sessions dans notre projet PHP MVC :

Session start automatique
→ Démarre la session (session_start()) si ce n'est pas déjà fait.

flash($name, $message, $class)
→ Gère des messages flash :

Si un message est passé, il est stocké en session.

Sinon, il affiche le message une seule fois avec une classe CSS personnalisable, puis le supprime.

redirect($location)
→ Redirige rapidement l'utilisateur vers une autre page avec un header("location:...") suivi d'un exit() pour stopper l'exécution.

5-La creation de models/User.php

Image description

Le fichier User.php gère toutes les opérations liées aux utilisateurs dans notre architecture MVC :

Connexion à la base
→ Le constructeur initialise une instance de la classe Database.

findUserByEmailOrUsername($email, $username)
→ Cherche un utilisateur en base via son email ou son nom d'utilisateur.

register($data)
→ Inscrit un nouvel utilisateur en insérant ses données (nom, email, identifiant, mot de passe hashé) dans la base.

login($nameOrEmail, $password)
→ Authentifie un utilisateur en vérifiant si le mot de passe donné correspond au hash enregistré.

resetPassword($newPwdHash, $tokenEmail)
→ Permet de réinitialiser le mot de passe d'un utilisateur via son email.

6-la creation de signup.php

Image description

include_once './helpers/session_helper.php'; : Inclut le fichier qui gère les sessions, comme les messages flash.

flash('register') : Affiche un message temporaire lié à l'inscription (succès/erreur).

Formulaire HTML : Collecte les informations de l'utilisateur (nom, email, mot de passe).

7- La creation de login.php

Image description

include_once './helpers/session_helper.php';
→ Importe les fonctions pour gérer les sessions et les messages flash.

flash('login')
→ Affiche un message temporaire (ex : erreur de connexion).

Lien SIGN UP ()
→ Redirige vers la page d'inscription si l'utilisateur n'a pas de compte.