Connexion administrateur ne donne pas
JeunLoup
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
bon aprem à vous. j'aurais un problème et j'aurais vrmt besoin d'aide svp.
j'arrive pas à me connecter en mode administrateur 'admins' mais en mode utilisateur si 'users'
voici mon code
j'arrive pas à me connecter en mode administrateur 'admins' mais en mode utilisateur si 'users'
voici mon code
<?php // tous d'abord il faut démarrer le système de sessions session_start(); if ($_POST) { require_once 'connexion.php'; extract($_POST); if($type_user=="administrateur"){ $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){ if(mysqli_num_rows($resultat)==0){ echo 'Utilisateur ou mot de passe incorrecte !!'; } else if($type_user=="administrateur"){ $row=mysqli_fetch_assoc($resultat); $_SESSION['id_admin']=$row['id_admin']; $_SESSION['login_admin']=$row['login_admin']; header('location:admin_page.php'); } else{ $row=mysqli_fetch_assoc($resultat); $_SESSION['id_user']=$row['id_user']; $_SESSION['login_user']=$row['login_user']; header('location:user_page.php'); } } mysqli_free_result($resultat); mysqli_close($bdd); } ?> <!DOCTYPE html> <html lang="fr"> <head> <!-- Basic --> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title> page login </title> </head> <body> <form action='login.php' method='POST'> <label>Nom d'utilisateur :</label> <input type="text" name="user_name" placeholder="Nom d'utilisateur " /><br /> <label>Mot de passe :</label> <input type="text" name="password" placeholder="Mot de passe " /><br /> <label>Type d'utilisateur :</label> <select name="type_user"> <option value="admin">Administrateur</option> <option value="user" selected>Utilisateur</option> </select><br /> <input type="submit" value="Se connecter" > </form> </body> </html>
A voir également:
- Connexion administrateur ne donne pas
- Gmail connexion - Guide
- Mot de passe administrateur - Guide
- Site inaccessible n'autorise pas la connexion - Guide
- Connexion chromecast - Guide
- Gmail connexion autre compte - Guide
1 réponse
Bonjour,
Faire des tables pour gérer les users d'un côté et les admins de l'autre est une erreur....
Il vaut mieux n'avoir qu'une seule table et jouer sur un champ que tu places à 1 ou 0 en fonction des droits de l'utilisateur.
Par exemple, une seule table "users" et un champ "admin"
Ce qui, dans ton code, donnerait :
De plus, il te faut "crypter" (ou plus exactement hacher ) le password du user.
Pour ça, tu dois utiliser les fonctions de php password_hash() pour le "crypter" et password_verify() pour le vérifier.
https://www.php.net/manual/fr/function.password-verify.php
NB: Ton souci se trouvait au niveau de la vérification de l'administrateur.
Tu regardais si
Alors que la value de ton champ est : "admin"
Faire des tables pour gérer les users d'un côté et les admins de l'autre est une erreur....
Il vaut mieux n'avoir qu'une seule table et jouer sur un champ que tu places à 1 ou 0 en fonction des droits de l'utilisateur.
Par exemple, une seule table "users" et un champ "admin"
Ce qui, dans ton code, donnerait :
<?php // tous d'abord il faut démarrer le système de sessions session_start(); //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //connexion à la bdd require_once 'connexion.php'; //si le formulaire a été envoyé if (!empty($_POST)) { extract($_POST); $isAdmin = $type_user=="administrateur" ? ' AND admin=1 ':""; $sql = "SELECT * FROM users WHERE login_user='$user_name' AND pwd_user='$password' $isAdmin "; $resultat=mysqli_query($bdd,$sql); //si la requête a retournée une erreur if(!$resultat){ echo("Error description: " . mysqli_error($con)); exit(); } if(mysqli_num_rows($resultat)==0){ echo 'Utilisateur ou mot de passe incorrecte !!'; }else $row=mysqli_fetch_assoc($resultat); $_SESSION['user']['id']=$row['id']; $_SESSION['user']['login']=$row['login']; $_SESSION['user']['admin']=$row['admin']; if($type_user=="admin"){ header('location:admin_page.php'); exit();//toujours mettre un exit après une redirection }else{ header('location:user_page.php'); exit();//toujours mettre un exit après une redirection } } mysqli_free_result($resultat); mysqli_close($bdd); } ?>
De plus, il te faut "crypter" (ou plus exactement hacher ) le password du user.
Pour ça, tu dois utiliser les fonctions de php password_hash() pour le "crypter" et password_verify() pour le vérifier.
https://www.php.net/manual/fr/function.password-verify.php
NB: Ton souci se trouvait au niveau de la vérification de l'administrateur.
Tu regardais si
$type_user=="administrateur"
Alors que la value de ton champ est : "admin"
<option value="admin">