Problème vérification des logins

Résolu
Jacksons Messages postés 18 Statut Membre -  
Jacksons Messages postés 18 Statut Membre -
Bonjour,



J'ai un petit problème. Je veux vérifier la correspondance du login entré par l'utilisateur avec celui présent dans ma base de données PHPmyadmin.

Lorsque les pseudos et mots de passe correspondent, ça marche nickel.

Par contre lorsque ça correspond pas la condition ne marche pas, je ne comprend pas pourquoi. Voici le bout de code qui foire :


<?php

$reponse = $bdd->query("SELECT pseudo, mdp FROM membres WHERE pseudo = '".$_POST['pseudo']."' AND mdp = '" . md5($_POST['pass']) . "'");

while ($donnees = $reponse->fetch())
{
if($_POST['pseudo'] != $donnees["pseudo"] OR md5($_POST['pass'])!= $donnees["mdp"])
{
echo "Ce compte n'existe pas !";
}
else
{
echo "Connexion réussie !";
}
}



?>
Pourquoi mon if ne marche pas ?

Merci d'avance !

2 réponses

Jacksons Messages postés 18 Statut Membre 1
 
Merci beaucoup pour ton aide, ta proposition marche à merveille.

Je suis plutôt débutant donc c'est vrai que j'en chie pas mal pour ce genre de truc.

Je ne connaissais pas rowcount ! Et effectivement retourner le nombre de ligne (1 donc) correspondant aux entrées du formulaire est exactement ce dont j'avais besoin.

Merci!
1
JooS Messages postés 2705 Statut Membre 228
 
Salut,

Quand la requête possède des paramètres en entrés, on utilise les requêtes préparés pour plus de sécurité.
Ton pseudo est supposé être un identifiant, donc unique, donc ta requête est supposé retourner au plus 1 résultat, donc pas besoin d'une boucle.
Tu n'as pas besoin de faire une seconde vérification de correspondance entre les pseudos, et les mot de passes, tu en as déjà fait une dans la requête, or, si la requête retourne un résultat, ça veut dire que le pseudo et le mot de passe correspondent.

<?php
$reponse = $bdd->prepare("SELECT pseudo FROM membres WHERE pseudo = :ps AND mdp = :md");
$reponse->bindParam(':ps', $_POST['pseudo'], PDO::PARAM_STR);
$reponse->bindParam(':md', md5($_POST['pass']), PDO::PARAM_STR);
$reponse->execute();

$nbrDeResultat = $reponse->rowCount();

if($nbrDeResultat == 0) {
echo "Ce compte n'existe pas !";
}
else {
echo "Connexion réussie !";
}
?>

0