Chapitre 37 : Mini-projet – Authentification
Créez une application complète d'authentification avec inscription, connexion et déconnexion en PHP
1. Objectif du projet
Créer un système d'authentification sécurisé avec :
- Inscription avec mot de passe haché
- Connexion avec vérification
- Déconnexion via session
- Zone privée accessible uniquement aux membres connectés
2. Structure de la base de données
CREATE TABLE utilisateurs (
id INT AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(150) NOT NULL UNIQUE,
mot_de_passe VARCHAR(255) NOT NULL,
date_creation DATETIME DEFAULT CURRENT_TIMESTAMP
);
3. Formulaire d'inscription
<form action="inscription.php" method="POST">
<input type="email" name="email" placeholder="Votre email" required>
<input type="password" name="mot_de_passe" placeholder="Mot de passe" required>
<button type="submit">S'inscrire</button>
</form>
4. Traitement de l'inscription (inscription.php)
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
$mdp = $_POST['mot_de_passe'];
if ($email && strlen($mdp) >= 6) {
$hash = password_hash($mdp, PASSWORD_DEFAULT);
$pdo = new PDO("mysql:host=localhost;dbname=auth", "root", "");
$stmt = $pdo->prepare("INSERT INTO utilisateurs (email, mot_de_passe) VALUES (?, ?)");
$stmt->execute([$email, $hash]);
echo "Inscription réussie.";
} else {
echo "Email ou mot de passe invalide.";
}
}
5. Connexion des utilisateurs
// connexion.php
session_start();
$pdo = new PDO("mysql:host=localhost;dbname=auth", "root", "");
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$stmt = $pdo->prepare("SELECT * FROM utilisateurs WHERE email = ?");
$stmt->execute([$_POST['email']]);
$user = $stmt->fetch();
if ($user && password_verify($_POST['mot_de_passe'], $user['mot_de_passe'])) {
$_SESSION['user_id'] = $user['id'];
header('Location: espace_prive.php');
} else {
echo "Identifiants incorrects.";
}
}
6. Accès restreint
// espace_prive.php
session_start();
if (!isset($_SESSION['user_id'])) {
header('Location: connexion.php');
exit();
}
echo "Bienvenue dans l'espace membre !";
7. Déconnexion
// deconnexion.php
session_start();
session_unset();
session_destroy();
header('Location: connexion.php');
8. Exercice pratique : Implémentez le système complet
🎯 Objectif : Créer un mini-site complet avec gestion des utilisateurs.
Consignes :
- Créer la table
utilisateurs - Créer les pages :
inscription.php,connexion.php,espace_prive.php,deconnexion.php - Utiliser les sessions PHP pour la connexion
- Sécuriser les mots de passe avec
password_hash()
Bonus :
- Ajouter un champ "nom"
- Empêcher les doublons d'inscription
- Afficher une erreur stylisée si l'authentification échoue
9. Résumé
- ✅ Vous avez appris à sécuriser une inscription
- ✅ Vous avez mis en place une vérification de mot de passe
- ✅ Vous gérez l'authentification avec des sessions
Félicitations ! Vous êtes maintenant capable de créer un véritable espace membre sécurisé.