Problème PHP ! Page Authentification MYSQL

Voilà je comprend pas, j’ai toujours un problème pour l’identification !
Voici ma Table :
users (id,pseudo,mdp,mail…etc)

Le Code de ma page de COnnexion

<?

// Redirige l'utilisateur s'il est déjà identifié
if(isset($_COOKIE["pseudo"]))
{
     header("Location: index.php");
}
else
{
     
     // Formulaire visible par défaut
     $masquer_formulaire = false;
     
     // Une fois le formulaire envoyé
     if(isset($_POST["BT_Envoyer"]))
     {
          
          // Vérification de la validité des champs
          if(!ereg("^[A-Za-z0-9_]{2,20}$", $_POST["pseudo"]))
          {
               $message = "Votre nom d'utilisateur doit comporter entre 2 et 20 caractères<br />\n";
               $message .= "L'utilisation de l'underscore est autorisée";
          }
          elseif(!ereg("^[A-Za-z0-9]{6,}$", $_POST["mdp"]))
          {
               $message = "Votre mot de passe doit comporter au moins 6 caractères";
          }
          else
          {
               
               // Connexion à la base de données
               // Valeurs à modifier selon vos paramètres configuration
               mysql_connect("localhost", "root", "");
               mysql_select_db("portail");
               
               // Sélection de l'utilisateur concerné
               $result = mysql_query("
                    SELECT id,pseudo,mdp
                    FROM users
                    WHERE pseudo = '" . $_POST["pseudo"] . "'
               ");
               
               // Si une erreur survient
               if(!$result)
               {
                    $message = "Une erreur est survenue lors de la tentative de connexion";
               }
               else
               {
                    
                    // Si aucun utilisateur n'a été trouvé
                    if(mysql_num_rows($result) == 0)
                    {
                         $message = "Le nom d'utilisateur " . $_POST["pseudo"] . " n'existe pas";
                    }
                    else
                    {
                         

                              
                              // Vérification du mot de passe
                              if(md5($_POST["mdp"]) != $row["mdp"])
                              {
                                   $message = "Votre mot de passe est incorrect";
                              }
                              else
                              {
                                   
                                   // Définition du temps d'expiration des cookies
                                   $expiration =
                                        empty($_POST["CB_Connexion_Automatique"]) ? 0 : time() + 90 * 24 * 60 * 60;
                                   
                                   // Création des cookies
                                   setcookie("id", $row["id"], $expiration, "/");
                                   setcookie("pseudo", $row["pseudo"], $expiration, "/");
                                   
                                   // Fermeture de la connexion à la base de données
                                   mysql_close();
                                   
                                   // Redirection de l'utilisateur
                                   header("Location: index.php");
                                   
                              }
                              
                         }
                         
                    }
                    
               }
               
               // Fermeture de la connexion à la base de données
               mysql_close();
               
          }
          
     }
     

?>
<html>
<head>
     <title>[PHP] Créer un espace membre</title>
</head>

<body>
<? if(isset($message)) { ?>
     <p><?= $message; ?></p>
<? } if($masquer_formulaire != true) { ?>
<form action="http://<?= $_SERVER["SERVER_NAME"] . $_SERVER["SCRIPT_NAME"]; ?>" method="post">
     <p>
          Nom d'utilisateur : <input name="pseudo" type="text" id="pseudo" />
     </p>
     <p>
          Mot de passe : <input name="mdp" type="password" id="mdp" />
     </p>
     <p>
          <input type="checkbox" name="CB_Connexion_Automatique" />
          Se connecter automatiquement à chaque visite
     </p>
     <p>
          <input type="submit" name="BT_Envoyer" value="Envoyer" />
     </p>
</form>
<? } ?>
</body>
</html>

Voilà l’erreur
[b]
Notice: Undefined variable: row in c:\program files\easyphp1-8\www\connexion.php on line 62

Votre mot de passe est incorrect[/b]

Il ressord toujours l’erreur de Mot de passe INCORRECT

Ps : le Mot de passe dans la Base est Hashé en MD5 dans un Champ (255)

Je suis perdu là, j’ai réussi a tout faire etc… enfin vous verez le reste :smiley:

Merci de m’aider :slight_smile:

if(md5($_POST[“mdp”]) != $row[“mdp”])
{
$message = “Votre mot de passe est incorrect”;
}

La réponse est claire, une de tes deux variables n’existe pas (n’est pas initialisée) donc le test retourne true (puisque != )

Et justement… je ne vois nul part la déclaration de ta variable $row[‘mdp’] avant le test dans ton script…
Pas évident de faire un test sur une variable non définie :slight_smile:
Edité le 15/02/2008 à 17:06

Au passage, en général le test qui est fait c’est :

$pdo->prepare('SELECT * FROM users WHERE login = :login AND password = :pwd');
$pdo->bindValue(':login', $login);
$pdo->bindValue(':pwd', md5($password));
$result  = $pdo->execute();

Etc.

(j’utilise PDO, mais ça s’applique dans ton cas aussi).

Comment la définir je vois pas ?

ben tu fais ça:


$result = mysql_query("
 SELECT id,pseudo,mdp
 FROM users
 WHERE pseudo = '" . $_POST["pseudo"] . "'
 ");

ce serait bien de récupérer les données après:


$resultat = mysql_fetch_array($result);
$row['mdp'] = $resultat[2];


Ta variable $row[‘mdp’] est maintenant déclarée et initialisée et tu dois pouvoir faire ton test :slight_smile:

Merci ca marche