J'ajouterais même qu'un while quand on sait n'attendre qu'au plus une ligne (colonne en primary key ou unique), ce n'est pas vraiment utile et un closeCursor dans la boucle, ça n'a pas de sens.
De plus
Code :
if ($sesame == $donnees['mp'] )
|
fait doublon avec ta clause WHERE et ça peut donner un résultat incohérent si côté SGBD tu ignores la casse (via un interclassement suffixé de _ci associée à la colonne côté MySQL par exemple) mais pas côté PHP (l'opérateur == étant une comparaison binaire/telle quelle).
Code :
if ($donnees = $req->fetch()) { } else { echo 'Mot de passe incorrect'; }
|
Devrait suffire (ça remplacerait ton while complet).
Voire même, si tu ne fais rien ensuite de $donnees, préférer un SELECT COUNT :
Code :
$req = $bdd->prepare('SELECT COUNT(*) FROM mpentree WHERE mp = :clef'); 'clef' => $sesame, )); if ($req->fetchColumn()/* > 0*/) { } else { echo 'Mot de passe incorrect'; }
|
Et s'il est vraiment question de mots de passe, hache les avec password_hash, on ne les garde pas en clair comme ça !
Message édité par pluj le 25-07-2017 à 23:42:33