From b2aefe3af574aae548eb1120ebf02c4d3f633755 Mon Sep 17 00:00:00 2001 From: Esteban Date: Mon, 8 Jun 2026 13:04:54 +0200 Subject: [PATCH] Hashage et sallage des MDPs (fonctionnel) --- pages/home.php | 1 - pages/login.php | 6 +++--- scripts/addUser.php | 13 ++++++++----- scripts/checkLogin.php | 31 ++++++++++++------------------- 4 files changed, 23 insertions(+), 28 deletions(-) diff --git a/pages/home.php b/pages/home.php index d04a55a..0e6468f 100644 --- a/pages/home.php +++ b/pages/home.php @@ -13,5 +13,4 @@ require_once('./../elements/header.php'); diff --git a/pages/login.php b/pages/login.php index 6bbe72d..4e05086 100644 --- a/pages/login.php +++ b/pages/login.php @@ -26,9 +26,9 @@ if (isset($_SESSION['user_id'])){

Connexion

- - - + + + diff --git a/scripts/addUser.php b/scripts/addUser.php index ecba0d7..7335a41 100644 --- a/scripts/addUser.php +++ b/scripts/addUser.php @@ -13,9 +13,9 @@ if (!isset($_SESSION["role"]) || $_SESSION["role"] != "admin") { // Si le formulaire a été soumis if ($_SERVER["REQUEST_METHOD"] == "POST") { // Récupération des données du formulaire - $user = $_POST["user"]; - $role = $_POST["role"]; - $passwd = $_POST["passwd"]; + $user = trim($_POST["user"] ?? ""); + $role = $_POST["role"] ?? ""; + $passwd = $_POST["passwd"] ?? ""; // Vérification que tous les champs sont remplis if ($user == "" || $role == "" || $passwd == "") { @@ -29,7 +29,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") { } else { try { // Requête SQL pour vérifier si le nom d'utilisateur existe déjà - $sqlVerification = "SELECT * FROM users WHERE username = :username"; + $sqlVerification = "SELECT * FROM users WHERE username = :username LIMIT 1"; $requeteVerification = $dbh->prepare($sqlVerification); $requeteVerification->execute([ ":username" => $user @@ -45,12 +45,15 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") { // Génération de la date de création $dateCreation = date("Y-m-d H:i:s"); + // Hashage du mot de passe + $passwordHash = password_hash($passwd, PASSWORD_DEFAULT); + // Requête SQL d'insertion du nouvel utilisateur $sqlAjout = "INSERT INTO users (username, password, role, created_at) VALUES (:username, :password, :role, :created_at)"; $requeteAjout = $dbh->prepare($sqlAjout); $requeteAjout->execute([ ":username" => $user, - ":password" => $passwd, + ":password" => $passwordHash, ":role" => $role, ":created_at" => $dateCreation ]); diff --git a/scripts/checkLogin.php b/scripts/checkLogin.php index a2b763e..acca6be 100644 --- a/scripts/checkLogin.php +++ b/scripts/checkLogin.php @@ -14,39 +14,30 @@ if ($_SERVER['REQUEST_METHOD'] !== 'POST') { exit; } -// On récupère les champs envoyé par le post et on les nettoie -$username = trim($_POST['id'] ?? ''); -$password = trim($_POST['passwd'] ?? ''); +$username = trim($_POST['username'] ?? ''); +$password = $_POST['password'] ?? ''; -// Si les champs sont vides on renvoie vers Login.php : Prévoir dans le futur une erreur -if (empty($username) || empty($password)) { - header('Location: ./../pages/login.php'); - exit; -} - -// On regarde si l'utilisateur est dans la base de donnée sinon ça ne sert a rien de traiter try { $stmt = $dbh->prepare('SELECT id, username, password, role FROM users WHERE username = :username LIMIT 1'); $stmt->execute([':username' => $username]); $user = $stmt->fetch(); - } catch (PDOException $e) { error_log('Erreur sql dans la requête : ' . $e->getMessage()); header('Location: ./../pages/login.php'); exit; } - + // On regarde si le mdp correspond à celui en bdd -if (!$user || $user['password'] !== $password) { +if (!$user || !password_verify($password, $user['password'])) { header('Location: ./../pages/login.php'); exit; } - + // Si la connexion est ok, on entregistre l'utilisateur dans $_SESSION -$_SESSION['user_id'] = $user['id']; +$_SESSION['user_id'] = $user['id']; $_SESSION['username'] = $user['username']; -$_SESSION['role'] = $user['role']; - +$_SESSION['role'] = $user['role']; + // Date de connexion mise à jour try { $stmt = $dbh->prepare('UPDATE users SET last_login = NOW() WHERE id = :id'); @@ -54,6 +45,8 @@ try { } catch (PDOException $e) { error_log('Le serveur WEB ne peut pas modifier la date de dernière connexion : ' . $e->getMessage()); } - + //Redirection vers home.php puisque que l'utilisateur est forcément connecté -header('Location: ./../pages/home.php'); \ No newline at end of file +header('Location: ./../pages/home.php'); +exit; +?> \ No newline at end of file