Page 1 sur 1

probleme requete pdo

Posté : 24 juil. 2011, 23:45
par lebarbare
bonjour a tous voila j'ai un pti souci et j'ai beau tourné mmon code dans tous les sens je trouve pas j'ai besoin des lumiere de pro du php :p

le probleme vien de ma page de connexion don 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>MN-Iformatique.com</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
   </head>
   <body>
   
   <div id="en_tete">
   </div>
   
   <?php include("menu.php");?>
   
   <div id="corps">
   <div id="formulaire">
		<form method="post" action="connexion.php">
		
   
		<p> <label for="pseudo">Pseudo</label><input type="text" name="pseudo" id="pseudo"/><br/>
			<label for="mdp">Mot de passe</label><input type="password" name="mot de passe"/>
						<input type="submit" name="ok" value="Ok"/>
		</form>
			<?php
		if (isset($_POST['ok']))
			{// connesxion bdd
		try {
			$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
			$bdd = new PDO('mysql:host=localhost;dbname=mn_info', 'root', '', $pdo_options);
			}catch (Exception $e){
			die('Erreur : ' . $e->getMessage());
			}
		
			if(!empty($_POST['pseudo'])&& !empty($_POST['mdp'])) //verif que les champs soit pas vide 
		
				{
	
			($reponse=$bdd->query('SELECT mdp FROM formulaire '));
			WHILE($donnees=$reponse->fetch());
	
		if ($mdp==md5($donnees))

		{
			session_start();//si tout est ok on crée $_SESSION['pseudo']
			$_SESSION['pseudo']=$pseudo;
			
			echo 'Connexion reussi !!   <a href="acc.php"><strong>Accueil</strong></a>';
		}
		elseif ($mdp!=md5($donnees))
		
		{
		echo 'Mauvais pseudo ou mot de passe';

		}
		
		}
		else
			{
			echo 'Tous les champs doivent etre remplis';
		
		}
		}
	?>
	</div>
	</div>
	</body>
	</html>
le probleme etant que par exemple si je met un pseudo different de celui de la bdd ou meme le bon j'ai le message d'erreur "Tous les champs doivent etre remplis" de meme si j'oublie un champ ...

enfaite j pense que il y a un probleme au niveau de ma requete mais alors lequel!! c'est la que j'ai besoin de vous :p

je debute je vien de lire pas mal de sujet sur php mais pdo je ne connais que le peu vu dans different tuto alors j'arrive pas a débugger le truc grrrr

Re: probleme requete pdo

Posté : 25 juil. 2011, 01:00
par leozoe
Slt

je pense que tu as oublié le where dans ta requête, tu ne spécifies pas sur quel pseudo tu vas chercher le mdp
$pseudo = mysql_real_escape_string($_POST['pseudo']);
($reponse=$bdd->query('SELECT mdp FROM formulaire WHERE pseudo='$pseudo' '));

Re: probleme requete pdo

Posté : 25 juil. 2011, 08:11
par xTG
Il risque d'y avoir des soucis si on mélange mysql_xx et PDO. :roll:

Pour protéger les chaînes avec PDO => PDO::prepare($sql)
Puis utiliser bindxxxx() ou bien directement dans execute(array(arguments))

Re: probleme requete pdo

Posté : 25 juil. 2011, 17:10
par lebarbare
desoler mais je connais pas trop pdo comme j'ai dis j'ai vu vite fait les quelque requete dans les tuto php et je voulais avant de mi mettre assimiler un peu mieux le php de peur de trop m'en mettre dans le crane et de tous melanger lol

bon j'ai retaper un peu les deux lignes de la requete mais je dois encor oublier quelque chose ou mal faire snifff m'enerve cette connerie de connexion ca fait trois jour que je galere la dessus ^^
		<?php
		if (isset($_POST['ok']))
			{// connesxion bdd
		try {
			$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
			$bdd = new PDO('mysql:host=localhost;dbname=mn_info', 'root', '', $pdo_options);
			}catch (Exception $e){
			die('Erreur : ' . $e->getMessage());
			}
		
			if(!empty($_POST['pseudo'])&& !empty($_POST['mdp'])) //verif que les champs soit pas vide 
		
				{
				$req = $bdd->prepare('SELECT mdp FROM formulaire WHERE pseudo="$pseudo"');
				$req->execute(array($_POST['pseudo']));

			WHILE($donnees=$reponse->fetch());
	
		if ($mdp==md5($donnees))

		{
			session_start();//si tout est ok on crée $_SESSION['pseudo']
			$_SESSION['pseudo']=$pseudo;
			
			echo 'Connexion reussi !!   <a href="acc.php"><strong>Accueil</strong></a>';
		}
		elseif ($mdp!=md5($donnees))
		
		{
		echo 'Mauvais pseudo ou mot de passe';

		}
		
		}
		else
			{
			echo 'Tous les champs doivent etre remplis';
		
		}
		}
	?>

Re: probleme requete pdo

Posté : 25 juil. 2011, 20:23
par leozoe
Ca ne peut pas marcher la non plus, parce que ta variable $peudo n'est pas définie
par contre je ne peux pas t'aider pour mettre en forme ta requete, car je ne connais pas PDO

Re: probleme requete pdo

Posté : 25 juil. 2011, 20:59
par lebarbare
bah normalement elle est defini dans le formulaire qui va avec ... je vais relire encor une enieme fois les tuto :lol: ou si quelqu'un passe par la qui peut m'expliquer mon voir mes erreur s:p

Re: probleme requete pdo

Posté : 25 juil. 2011, 22:08
par leozoe
ben :non: , tel que tu as fait, ta variable $pseudo est vide

tu dois lui attribuer la valeur du $_POST en la protégeant
avec PDO je ne sais pas comment on fait pour la protéger, mais avec une requête normale $pseudo = mysql_real_escape_string($_POST['pseudo']);