Erreur systématique dans formulaire login

Eléphant du PHP | 447 Messages

05 sept. 2008, 12:04

Bonjour chers phpiens et phpiennes (y en a?)!!

J'ai un fichier php de traitement de formulaire de login qui ne fonctionne pas, j'ai essayé plein de truc différent, rien à faire:
<?php
session_start();

// Message

if (empty($_POST['nom']) || empty($_POST['mdp']) ) //Oublie d'un champ
{
        $message = '<h3>Erreur</h3>
		<p>Une erreur s\'est produite pendant ton authentification.
        Tous les champs doivent être rempli!<br />
        <a href="connect.php">Retourner</a> au formulaire</p>';
}
else
{
        //Acces interdit : le membre est déjà connecté
        if (isset($_SESSION['nom']))
        {
                $message ='<p>Tu es déjà connecté...</p>';
        }
        else // Autorisation ok : il reste à voir le mot de passe
        {
        include("includes/db.php");
        mysql_connect($host, $root, $mdp);
        mysql_select_db($db);


        //On protège les données
        $pseudo = mysql_real_escape_string($_POST['nom']);
        $password = mysql_real_escape_string($_POST['mdp']);

        $requete = mysql_query('SELECT mdp
        FROM mb_users WHERE nom = "'.$pseudo.'"')
        or die (mysql_error());
        $data = mysql_fetch_assoc($requete);

        if ($data['mdp'] == md5($password)) // Acces OK !
        {

                $_SESSION['nom'] = $pseudo;

                $message = '<h3>Bienvenue '.stripslashes(htmlspecialchars($_SESSION['nom'])).'</h3>
                <p>Tu es maintenant connecté!</p>';

         }
         else // Acces pas OK !
         {
                $message = '<h3>Erreur<h3><p>Une erreur s est produite
                pendant ton authentification.
                Le mot de passe ou le pseudo entré n\'est pas correcte.</p>
                <p>Revenir au <a href="connect.php">formulaire d\'identification</a>.</p>';
          }
       }
}

$titre = "Music*boX v.3 :: connection +";
include ('includes/top.php');
?>
Il passe systématiquement sur le dernier else bien que le pseudo et le mdp soit correct... Je ne comprends vraiment pas pourquoi!
Que faire?
Probably (only a) Human Problem?

Mammouth du PHP | 1353 Messages

05 sept. 2008, 12:16

Question stupide : tes mots de passe ont bien été entrés en md5 dans la base ? :)

Aussi tu pourrais te passer du mysql_fetch_assoc et faire directement :
$pseudo = mysql_real_escape_string($_POST['nom']); 
        $password = mysql_real_escape_string($_POST['mdp']); 

        $requete = mysql_query('SELECT nom
        FROM mb_users WHERE nom = "'.$pseudo.'" AND mdp = "'.md5($password).'"'); 
        or die (mysql_error()); 
        if (mysql_num_rows($requete)) // Acces OK ! 
Ca change pas grand chose mais ca évite une opération de traitement ;)
Modifié en dernier par guilt92 le 05 sept. 2008, 12:19, modifié 1 fois.
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

05 sept. 2008, 12:19

Bonjour,

Fait un echo de $data['mdp'], $password et md5($password) pour t'assurer que tes conditions soient bien validées
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 447 Messages

05 sept. 2008, 12:26

Pour:
echo $data['mdp']; echo '<br />';
				echo $password;   echo '<br />';
				echo md5($password); echo '<br />';
voilà les réponses:

81dc9bdb52d04dc20036dbd8313ed0
1234
81dc9bdb52d04dc20036dbd8313ed055

Et voilà le mdp tel qu'encodé dans la table:

81dc9bdb52d04dc20036dbd8313ed0

Je suis très désappointé... pourquoi l'ajout de ces 2 caractères sur le md5($passowrd)?
Probably (only a) Human Problem?

Mammouth du PHP | 1353 Messages

05 sept. 2008, 12:50

C'est pas plutot ton insertion en base qui est erronée ? tu as pas un nombre limite de caractère dans ton champ mot de passe qui aurait coupé le mdp ?

Comment as tu fait l insertion des mdp en base ?
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 447 Messages

05 sept. 2008, 12:56

Je pense que ça doit être ça... j'avais mis un varchar 30 pour le champ mdp.
Probably (only a) Human Problem?

Eléphanteau du PHP | 36 Messages

05 sept. 2008, 13:49

32 le md5, 32 8-)
Julien Pauli - Formateur pôle PHP ZendFramework chez Anaska
Contributeur au projet Zend Framework
Ma page de tutoriaux, mon blog

Eléphant du PHP | 447 Messages

05 sept. 2008, 14:43

Merci à tous!! c'est cool :wink:
Probably (only a) Human Problem?