note: les visuels des codes fournis ne sont pas sous forme de capture d'ecran mais sous forme de texte directement pour une meilleur lisibilité
CREATE TABLE admins ( id_admin INT NOT NULL AUTO_INCREMENT PRIMARY KEY, login_admin VARCHAR(50), pwd_admin VARCHAR(50) ); CREATE TABLE users ( id_user INT NOT NULL AUTO_INCREMENT PRIMARY KEY, login_user VARCHAR(50), pwd_user VARCHAR(50) ); INSERT INTO admins (login_admin, pwd_admin) VALUES ('admin', '1234'); INSERT INTO users (login_user, pwd_user) VALUES ('user', '1234');
mysqli.
<?php // Tentative de connexion au serveur MySQL $bdd = mysqli_connect('localhost', 'mathieuprosper_Admin', 'x_Sz6VY_u[N%', 'mathieuprosper_Ben_Amor'); // Vérification de l'état de la connexion if (!$bdd) { die('Erreur de connexion'); } ?>
<?php session_start(); // Nettoyage des sessions précédentes si elles existent if (isset($_SESSION['id_admin']) || isset($_SESSION['id_user'])) { session_destroy(); } if ($_POST) { require_once 'connexion.php'; extract($_POST); // Construction de la requête selon le rôle sélectionné if ($type_user == "admin") { $sql = "SELECT * FROM admins WHERE login_admin='$user_name' AND pwd_admin='$password'"; } else { $sql = "SELECT * FROM users WHERE login_user='$user_name' AND pwd_user='$password'"; } $resultat = mysqli_query($bdd, $sql); if ($resultat) { // Vérification si une ligne correspond aux identifiants if (mysqli_num_rows($resultat) == 0) { echo 'Utilisateur ou mot de passe incorrect !!'; } else if ($type_user == "admin") { // Création session Admin et redirection $row = mysqli_fetch_assoc($resultat); $_SESSION['id_admin'] = $row['id_admin']; $_SESSION['login_admin'] = $row['login_admin']; header('Location: admin_page.php'); exit(); } else { // Création session User et redirection $row = mysqli_fetch_assoc($resultat); $_SESSION['id_user'] = $row['id_user']; $_SESSION['login_user'] = $row['login_user']; header('Location: user_page.php'); exit(); } } } ?>
mysqli_num_rows renvoie 1, l'utilisateur est authentifié. Les variables de session sont alors initialisées pour persister l'état "connecté" sur les autres pages.
admin_page.php et user_page.php sans authentification préalable.<?php session_start(); // Vérification de sécurité : Est-ce un admin ? if (!isset($_SESSION['id_admin'])) { // Si non, redirection vers le login header('Location: login.php'); exit(); } echo 'Bienvenue Admin : ' . $_SESSION['login_admin']; ?>
isset() agit comme un garde-fou. Elle garantit que seul un utilisateur ayant passé avec succès l'étape de login (et donc ayant une session active) peut visualiser le contenu protégé.