Page 1 sur 1

probleme script authentification

Posté : 19 nov. 2007, 21:30
par ovibe29
Bonjour,
depuis quelques temps je bloque sur un script d'authentification.
Que le pseudo et le mot de passe soient bon ou pas, il met toujours la meme chose: "Mauvais pseudo ou mot de passe".

Voici le code:
<?php
session_start();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
   <head>
       <title>Espace commentaires</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <link rel="stylesheet" media="screen" type="text/css" title="Design" href="css.css" />
    </head>
    <body>
    
    
        <?php
        
    mysql_connect("localhost", "root", ""); //  Connection a MySQL
    mysql_select_db("test");
    
    
    $pseudo = $_POST['pseudo'];
    $pass = $_POST['pass'];
    $_SESSION['pass'] = $pass; //  On rend les variables 
    $_SESSION['pseudo'] = $pseudo; //  accessibles partout

    
    if (isset($_POST['pseudo'])) //Si la variable $_POST['pseudo'] existe
		{
    
	    $requete = mysql_query("SELECT * FROM membre WHERE pseudo = '.$pseudo.' AND pass='.$pass.'") or die(mysql_error());//je cherche ou est le champ qui correspond a ce pseudo et a ce password (ont fait d une pierre deux coups^^)
		$donnees = mysql_num_rows($requete);
			
			if($donnees > 0)
				{     //si il trouve (superieur a rien)
				echo 'Bonjour '.$_SESSION['pseudo'];
				}
				
			else // Si le pseudo ou le mot de passe est incorect
				{
				echo 'Mauvais pseudo ou mot de passe<br />
					Entrez: <br />
				    <form action="test membre.php" method="post">
				    Pseudo<input type="text" name="pseudo"/>
				    Pass<input type="text" name="pass"/>
				    <input type="submit" value="Ok!"/>
				    </form>';
				}
		}

	else // Si c'est la premiere fois que la page est chargée
		{
		echo '
		Entrez: <br />
		    <form action="test membre.php" method="post">
		    Pseudo<input type="text" name="pseudo"/>
		    Pass<input type="text" name="pass"/>
		    <input type="submit" value="Ok!"/>
		    </form>';
		}
	
    mysql_close(); //  On se déconnecte de MySQL
    ?>
    
    </body>
</html>
Si vous savez ou est l'erreur, merci.

Posté : 19 nov. 2007, 21:56
par choubix
oups:

essaie ca peut etre:
$requete = ("SELECT * FROM membre WHERE pseudo = '.$pseudo.' AND pass='.$pass.'");
mysql_query($requete) or die ('Invalid query: ' . mysql_error());
et verifie si 'tas pas des points en trop

Posté : 19 nov. 2007, 21:58
par Truc
Des points qui devaient servir à concaténer en trop je dirais
"SELECT * FROM membre WHERE pseudo = '.$pseudo.' AND pass='.$pass.'"

Posté : 19 nov. 2007, 22:06
par ovibe29
ah, c'est bon, j'ai enlevés tous les points dans la requete:
"SELECT * FROM membre WHERE pseudo = '.$pseudo.' AND pass='.$pass.'" 
"SELECT * FROM membre WHERE pseudo = '$pseudo' AND pass='$pass'" 
merci a vous deux
a+!

Posté : 19 nov. 2007, 22:20
par zeus
A savoir que la syntaxe
"SELECT * FROM membre WHERE pseudo = '". $pseudo ."' AND pass='". $pass ."'" 
est à préférer à la syntaxe
"SELECT * FROM membre WHERE pseudo = '$pseudo' AND pass='$pass'" 
car les variables sont vraiment extraites des chaines, qu'elles sont visibles, et que tu ne sera pas surpris de voir que les variables ne sont pas interprétées si tu remplaces " par '

voici un exemple qui illustre le dernier point :
$nom = "zeus";
echo "mon nom est $nom sur PHPFrance"; // Affiche mon nom est zeus sur PHPFrance
echo 'mon nom est $nom sur PHPFrance'; // Affiche mon nom est $nom sur PHPFrance

Posté : 20 nov. 2007, 01:03
par h0_noMan
D'autant que d'après les bench on perds beaucoup moins de temps proc en sortant les variables des chaines.