Php : recherche dans la table impossible

Résolu
Bonjour,

je suis en train de réaliser un programme d'authentification à une base de données. Le script php ne trouve pas le bon mot de passe et le bon login, c'est là mon problème. Quelqu'un peut il m'aider? Merci.

<html>
 <head>
 </head>
 <body>
  <form name="formulaire" method="POST" action="exercice1.php">
   <table border="1" cellspacing="0" cellpadding="0" align="center">
    <tr>
     <td>
      <table>
       <tr>
        <td colspan="2" align="center"><b>Formulaire d'authentification</b></td>
       </tr>
       <tr>
        <td>Nom d'utilisateur: </td><td><input type="text" name="zoneNom"></td>
       </tr>
       <tr>
        <td>Mot de passe: </td><td><input type="text" name="zoneMdp"></td>
       </tr>
       <tr>
        <td align="center"><input type="reset" name="btonreset" value="effacer"></td><td align="center"><input type="submit" name="btonok" value="ok"></td>
       </tr>
      </table>
     </td>
    </tr>
   </table>
  </form>
 </body>
</html>


<?php
 $connection=mysql_connect("localhost", "root", "");
  if($connection)
  {
   $bd=mysql_select_db("aigemephp");
   if($bd)
   {
    $nu=$_POST['zoneNom'];
    $mdp=$_POST['zoneMdp'];

    $requete="select * from authentification";
    $resultat=mysql_query($requete);
 
    while ($ligne=mysql_fetch_assoc($resultat))
    { 
     if($nu=$ligne['login'] && $mdp=$ligne['motdepasse'])
      echo ("login et mot de passe trouvés");
     else
      echo ("login et mot de passe non trouvés");
    }

   }
   else
    die (mysql_error());
   }
  else
   die (mysql_error());

?>

6 réponses

  1. Modérateur
    Ici:
    if($nu=$ligne['login'] && $mdp=$ligne['motdepasse'])

    "=" c'est l'affectation. "==" c'est la comparaison.

    Si tu fais if($nu=$ligne['login']) alors c'est l'equivalent de :
    $nu=$ligne['login'];
    if($nu){ /*equivalent de Si $nu !=0 ou $nu !='' ou $nu !=NULL ou $nu!=False */
               ....
    }


    Or toi, ce que tu veux faire ce n'est pas rentrer la valeur de $ligne['login'] dans $nu mais mais comparer ces deux valeurs.

    Un petit conseil pour optimiser ton code.
    Un select sans condition, ça va faire travailler ta base de données, la bande passante du serveur et ta page Php pour rien car tu demandes tout ce qu'il ya dans une table.

    Prends plutôt:
    <?php
     $connection=mysql_connect("localhost", "root", "");
      if($connection)
      {
       $bd=mysql_select_db("aigemephp");
       if($bd)
       {
        $nu=$_POST['zoneNom'];
        $mdp=$_POST['zoneMdp'];
    
        $requete="select * from authentification WHERE login='$nu' AND motdepasse='$mdp';
        $resultat=mysql_query($requete);
    
        if(mysql_num_rows($resultat) ){
                 //Il ya un résultat, donc le login et le mot de passe sont bons
    }
    0
    1. merci kylian; le programme marche bien maintenant; voici le bon code:

      <?php
      	$connection=mysql_connect("localhost", "root", "");
      		if($connection)
      		{
      			$bd=mysql_select_db("aigemephp");
      			if($bd)
      			{
      				$nu=$_POST['zoneNom'];
      				$mdp=$_POST['zoneMdp'];
      
      				$requete="select * from authentification where nom='$nu' AND motdepasse='$mdp'";
      				$resultat=mysql_query($requete);
      				if($resultat)
      				{
      					
      					echo ("password and login found");
      				}
      				else
      					echo ("password and login not found");
      			}
      			else
      				die (mysql_error());
      			}
      		else
      			die (mysql_error());
      
      ?>
      0
      1. Modérateur
        Désolé, mais ya un bug dans ton code ...
        mysql_query ne retourne pas directement un résultat. dans le cas d'un select mysql_query va retourner une ressource de requete sql (à priori, même si cette requete ne retourne rien). Et une ressource c'est différent de false, Null, 0 etc...).

        Utilise mysql_num_rows pour faire ton test après mysql_query. Avec mysql_num_rows, tu as le nombre de lignes retournées pour ton résultat.
        Si c'est 0, c'est qu'il n'y a pas de resultat.
        0
        1. Merci kylian pour ton aide, le bug est corrigé et le programme marche bien.

          <?php
          	$connection=mysql_connect("localhost", "root", "");
          		if($connection)
          		{
          			$bd=mysql_select_db("aigemephp");
          			if($bd)
          			{
          				$nu=$_POST['zoneNom'];
          				$mdp=$_POST['zoneMdp'];
          
          				$requete="select * from authentification where nom='$nu' AND motdepasse='$mdp'";
          				$resultat=mysql_query($requete);
          
          				if(mysql_num_rows($resultat))
          				{
          					
          					echo ("Bienvenue. Connexion réussie !");
          				}
          				else
          					echo ("<b>Echec de la connexion</b>. <a href=\"exercice1html.html\">Cliquez ici pour revenir au formulaire</a>");
          			}
          			else
          				die (mysql_error());
          			}
          		else
          			die (mysql_error());
          
          ?>
          0
          1. je vois que vous ete nombreux mais personne ne repond a mon mess je , je peux meme pas compter sur vous
            0
            1. Modérateur
              Plains toi au service client....
              0
            2. Modérateur
              Tu vois un risque dans le code?

              Ben en même temps, si à chaque fois que quelqu'un veux de l'aide en Php et qu'il faut àchaque fois rajouter des protections dans le code, on en finirais pas...
              0