Introduction
Dans ce tutoriel, nous allons voir comment mettre en place un système de connexion (Login) et d'inscription (Signup) robuste en utilisant PHP 8, l'extension PDO pour la sécurité des données, et MySQL pour le stockage.
Étape 1 : La Base de Données (MySQL)
Avant tout, nous devons créer une table pour stocker nos utilisateurs. Voici le script SQL :
SQL
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
fullname VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL
);
Étape 2 : Connexion via PDO (config.php)
Pour communiquer avec MySQL en toute sécurité, on utilise PDO :
PHP
<?php
try {
$pdo = new PDO("mysql:host=localhost;dbname=lumina_db;charset=utf8", "root", "");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("Erreur de connexion : " . $e->getMessage());
}
?>
Étape 3 : Inscription avec Hachage (register.php)
Important : On ne stocke jamais les mots de passe en clair ! On utilise password_hash.
PHP
<?php
require_once 'config.php';
// ... récupération des données POST
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
$sql = "INSERT INTO users (fullname, email, password) VALUES (?, ?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$fullname, $email, $hashed_password]);
echo "Inscription réussie !";
?>
Étape 4 : Connexion et Vérification (login.php)
Pour vérifier l'utilisateur, on utilise password_verify :
PHP
<?php
// ... après récupération de l'utilisateur en DB
if ($user && password_verify($password, $user['password'])) {
session_start();
$_SESSION['user_id'] = $user['id'];
echo "Bienvenue !";
} else {
echo "Identifiants incorrects.";
}
?>
Conclusion
Ce projet montre l'importance de l'utilisation des requêtes préparées pour éviter les injections SQL et du hachage pour protéger les données sensibles.
Retrouvez le code complet sur mon GitHub :
https://github.com/soultanah135-commits/Systeme-Authentification-Lumina.git