Problème d'authentification dans une page php

Fermé
Hazel - 19 mars 2010 à 11:34
 le père - 19 mars 2010 à 11:55
Bonjour !

J'effectue un stage en informatique et je dois réaliser une page protégée par mot de passe, réservée aux membres enregistrés dans une base de données que j'ai créée.
Malheureusement, lorsque j'essaie de me connecter en utilisant un identifiant et un mot de passe valides, ça ne fonctionne pas. Ma page php me renvoie l'erreur "Mot de passe incorrect" (un echo que j'ai codé au cas où l'utilisateur se tromperait de mot de passe).
Je ne comprends pas pourquoi le code ne fonctionne pas, j'ai vérifié plusieurs fois mes requêtes et tout me semble normal. Je vous copie-colle le code source concerné :


if (isset ($_POST['valider_connexion']) )
			{
				if (isset ($_POST['id_eleve']) && isset ($_POST['mot_de_passe']) ) // on vérifie que l'utilisateur a rempli les 2 champs
				{
					mysql_connect("localhost", "root", "");
					mysql_select_db("montalembert");
					$id_eleve = $_POST['id_eleve'];
					$id_eleve = strtoupper ($id_eleve);
					$reponse = mysql_query ("SELECT mot_de_passe FROM eleves_membres WHERE id_eleve = '$id_eleve'");
					
					if ($reponse == NULL) //on gère l'erreur si l'identifiant n'est pas trouvé dans la base de données
					{
						try
						{
							$bdd = new PDO('mysql:host=localhost;dbname=montalembert', 'root', '');
						}
						catch (Exception $e)
						{	
							die('Erreur : ' . $e->getMessage());
						}	
						echo "Votre identifiant n'est pas correct. L'identifiant est sous la forme prénom_nom";
					}
					else
					{
						if ($_POST['mot_de_passe'] == $reponse) // on regarde si le mot de passe entré par l'utilisateur est bien celui enregistré dans la bdd pour son identitfiant
						{
							header('Location: accueil.php'); //si la vérification est bonne, l'utilisateur est redirigé sur la page d'accueil
						}
						else
						{
							
							echo "Mot de passe incorrect." ;
						}
					}
					
					mysql_close () ;



Je ne suis pas sure de mon code concernant la gestion des erreurs, mais de toute façon il ne devrait pas s'appliquer puisque je rentre les bons identifiant et mot de passe. Ce n'est donc pas ça qui est censé bloquer l'exécution de la vérification.

Pourriez vous m'aider à comprendre pourquoi la connexion ne fonctionne pas ?
Merci d'avance !! :)
A voir également:

1 réponse

Bonjour

Première remarque : ton test if ($reponse == NULL) devrait être if ($reponse === false) car mysql_query rend false en cas d'erreur, et non pas NULL
Deuxièmement :
En cas de succès, la valeur renvoyé est une ressource, pas un mot de passe : tu ne peux donc pas faire if ($_POST['mot_de_passe'] == $reponse)
Pour utiliser la ressource $reponse, il faut d'abord extraire une ligne de résultats (il peut y avoir 0, 1 ou plusieurs lignes) avec mysql_fetch_array:
$ligne=mysql_fetch_array($reponse);
s'il n'y a aucune réponse, $ligne vaudra false. S'il y en a plusieurs, des mysql_fetch_array() successifs liront les autres réponse, jusqu'à ce que tu aies false.
ce $ligne n'est pas encore le mot de passe. C'est un tableau dont les indices sont les noms des champs que tu as demandés dans ta requête. Dans ton cas, tu en as un seul, mot_de_passe ; tu peux faire ton test avec $ligne['mot_de_passe']
0