Php : recherche dans la table impossible

Résolu/Fermé
tonguim Messages postés 47 Date d'inscription mercredi 7 septembre 2005 Statut Membre Dernière intervention 27 février 2015 - 1 mai 2006 à 18:56
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 4 mai 2006 à 17:53
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());

?>
A voir également:

6 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
2 mai 2006 à 01:07
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
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
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
2 mai 2006 à 22:20
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
3 mai 2006 à 21:15
Good! :-)
0
spamware Messages postés 31 Date d'inscription jeudi 13 avril 2006 Statut Membre Dernière intervention 23 mai 2007 3
3 mai 2006 à 21:52
je vois que vous ete nombreux mais personne ne repond a mon mess je , je peux meme pas compter sur vous
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
3 mai 2006 à 22:12
Plains toi au service client....
0
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
4 mai 2006 à 01:45
...et bonjour l'SQL injection
http://www.unixwiz.net/techtips/sql-injection.html
http://www.certa.ssi.gouv.fr/site/CERTA-2004-INF-001/index.html

Johan
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
4 mai 2006 à 17:53
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