probleme script authentification

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme script authentification

par h0_noMan » 20 nov. 2007, 01:03

D'autant que d'après les bench on perds beaucoup moins de temps proc en sortant les variables des chaines.

par zeus » 19 nov. 2007, 22:20

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

par ovibe29 » 19 nov. 2007, 22:06

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+!

par Truc » 19 nov. 2007, 21:58

Des points qui devaient servir à concaténer en trop je dirais
"SELECT * FROM membre WHERE pseudo = '.$pseudo.' AND pass='.$pass.'"

par choubix » 19 nov. 2007, 21:56

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

probleme script authentification

par ovibe29 » 19 nov. 2007, 21:30

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.