Problème de redirection
rawiaGL
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
JooS Messages postés 2468 Date d'inscription Statut Membre Dernière intervention -
JooS Messages postés 2468 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai trois types d'utilisateurs enregistrés dans ma base de données admin, utilisateur et superviseur, ils accèdent chacun à son espace propre via la même interface d'authentification
tout autre login ou mot de passe non inscrit n'a pas d'accès à l'application dont voici le code de la page login
Mon problème est lorsque je me connecte en tant que admin c'est à dire case statut = 2
il m'affiche le message "Mauvais login/password .."
j'arrive pas à comprendre où est exactement le problème ?
j'ai trois types d'utilisateurs enregistrés dans ma base de données admin, utilisateur et superviseur, ils accèdent chacun à son espace propre via la même interface d'authentification
tout autre login ou mot de passe non inscrit n'a pas d'accès à l'application dont voici le code de la page login
session_start();
//require('./includes/login.php');
/*************************************/
/*Proc?dure de connexion au base
/***********************************/
$host="127.0.0.1";
$user="root";
$password="root";
$myconnex=mysql_connect($host,$user,$password) or die("connexion impossible");
////////////////////////////////// Test l'existance de la base et le nom de la base ////////////////////////
$bdd="stage";
mysql_select_db($bdd) or die ("erreur de connexion à la base de donn?es");
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['mot_de_passe']) && !empty($_POST['mot_de_passe']))) {
extract($_POST);
// on recupère le password et le login de la table qui correspond au visiteur
$sql = 'SELECT * FROM `admin_smtp` WHERE login="'.mysql_escape_string($_POST['login']).'" AND mot_de_passe="'.mysql_escape_string(md5($_POST['mot_de_passe'])).'"';
$result = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$count=mysql_num_rows($result);
$row=mysql_fetch_array($result);
mysql_free_result($result);
mysql_close();
if($row['login'] != $login) {
echo '<p>Mauvais login / password. Merci de recommencer</p>';
include('./index.php'); // On inclut le formulaire d'identification
exit;
}
else {
//connexion selon le type de l'utilisateur
switch ($row['statut']) {
case 2:
$_SESSION['login'] = $_POST['login'];
header('Location:./admin/services.php');
echo ("you logged in as admin");
break;
case 0:
$_SESSION['login'] = $_POST['login'];
header("location:./user/smtp_client.php");
echo ("you logged in as client");
break;
case 1:
$_SESSION['login'] = $_POST['login'];
header("location:./sup/smtp_sup.php");
echo ("you logged in as supervisor");
break;
}
}
}
else {
echo '<p>Vous avez oublie de remplir un champ.</p>';
include('./index.php'); // On inclut le formulaire d'identification
exit;
}
?>
Mon problème est lorsque je me connecte en tant que admin c'est à dire case statut = 2
il m'affiche le message "Mauvais login/password .."
j'arrive pas à comprendre où est exactement le problème ?
A voir également:
- Problème de redirection
- L'url suivante, censée aboutir à un article, donne lieu à une redirection indiquant que la page n'a pas été trouvée. retrouvez la page recherchée. reportez le titre de l’article et son auteur. - Forum Microsoft Edge / Internet Explorer
- Redirection de mail - Guide
- Problème 'Cette page Web présente une boucle de redirection' ✓ - Forum Google Chrome
- Redirection 410 - Forum MacOS
- Retrouver un url interrogé ✓ - Forum Réseaux sociaux
1 réponse
Salut,
- A quoi bon faire un "extract" si tu continues d'utiliser le tableau POST !
- Au lieu de vérifier si le login est correct (chose inutile, puisque si la requete retourne quelque chose, c'est que le login et le mot de passe sont corrects), vérifie seulement si "$count" est égale à 1, si c'est le cas, alors tout est correct, sinon, tu affiches le message d'erreur.
- Utilise "mysql_real_escape_string" au lieu de "mysql_escape_string", sinon, évite toutes ces fonctions ainsi que mysql_connect, mysql_select_db ... etc, sont obsolètes, il est fortement conseillé de changer de méthode de travail et de migrer vers PDO ou MySQLi.
- Ton erreur, mysql_fetch_array retourne un tableau indexés, et non pas un tableau associatif, donc la fonction que tu recherches est "mysql_fetch_assoc".
PS : Dans la page de l'admin, de l'utilisateur et du superviseur, est ce que tu vérifies tout en haut si l'utilisateur a le droit d'accès ?
Parce que si ce n'est pas le cas, n'importe qui peux se connecter en tant qu'utilisateur, puis taper dans la barre des adresses "http://localhost/sup/smtp_sup.php" et accéder a la section du superviseur !
Bon courage.
- A quoi bon faire un "extract" si tu continues d'utiliser le tableau POST !
- Au lieu de vérifier si le login est correct (chose inutile, puisque si la requete retourne quelque chose, c'est que le login et le mot de passe sont corrects), vérifie seulement si "$count" est égale à 1, si c'est le cas, alors tout est correct, sinon, tu affiches le message d'erreur.
- Utilise "mysql_real_escape_string" au lieu de "mysql_escape_string", sinon, évite toutes ces fonctions ainsi que mysql_connect, mysql_select_db ... etc, sont obsolètes, il est fortement conseillé de changer de méthode de travail et de migrer vers PDO ou MySQLi.
- Ton erreur, mysql_fetch_array retourne un tableau indexés, et non pas un tableau associatif, donc la fonction que tu recherches est "mysql_fetch_assoc".
PS : Dans la page de l'admin, de l'utilisateur et du superviseur, est ce que tu vérifies tout en haut si l'utilisateur a le droit d'accès ?
Parce que si ce n'est pas le cas, n'importe qui peux se connecter en tant qu'utilisateur, puis taper dans la barre des adresses "http://localhost/sup/smtp_sup.php" et accéder a la section du superviseur !
Bon courage.
En fait non, elles ne sont pas ignorées !
Il est plus approprié de dire que les "echo" sont totalement inutiles après une redirection, parce que vu que tout le script s'exécute en seulement quelques millisecondes, on a alors l'impression que les messages ne sont pas générés, mais en réalité sur le serveur, ils le sont !
Donc les instructions après une redirection sont bel et bien exécutés, maintenant faut voir si elles sont utiles ou pas (cas de la directive "echo") !
D'ailleurs c'est pour ça que pleins de gens mettent "exit" ou "die" juste après une redirection, c'est pour dire au compilateur que ce n'est plus la peine de continuer l'exécution de la page.
SI tu as encore un doute, essaye ce script !
Normalement le script affiche une erreur, "variable $_SESSION['tmp'] introuvable", car sa définition se trouve après la redirection ... et ben non, la variable est bel et bien définie et affiché.