Connexion administrateur ne donne pas
Fermé
JeunLoup
Messages postés
6
Date d'inscription
jeudi 26 juillet 2018
Statut
Membre
Dernière intervention
14 août 2018
-
14 août 2018 à 17:24
jordane45 Messages postés 38410 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 9 février 2025 - 14 août 2018 à 18:46
jordane45 Messages postés 38410 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 9 février 2025 - 14 août 2018 à 18:46
A voir également:
- Connexion administrateur ne donne pas
- Gmail connexion - Guide
- Mot de passe administrateur - Guide
- Gmail connexion autre compte - Guide
- Site inaccessible n'autorise pas la connexion - Guide
- Connexion chromecast - Guide
1 réponse
jordane45
Messages postés
38410
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 février 2025
4 733
14 août 2018 à 18:46
14 août 2018 à 18:46
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">