Php : recherche dans la table impossible

Résolu
tonguim Messages postés 50 Statut Membre -  
kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   -
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. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    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
  2. tonguim
     
    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
  3. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    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
  4. tonguim
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    Good! :-)
    0
  7. spamware Messages postés 31 Statut Membre 3
     
    je vois que vous ete nombreux mais personne ne repond a mon mess je , je peux meme pas compter sur vous
    0
    1. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
       
      Plains toi au service client....
      0
    2. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
       
      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