Bonjour,
Qu'est ce que ça donne si tu fais un var_dump de "$req->fetch()" ?
Est-ce que tu a essayé de passer ta requête dans un éditeur SQL, comme celui de phpMyAdmin par exemple ?
Bonjour,
Je rencontre un petit problème avec mon code. J'ai mis en place un système d'authentification avec un formulaire et une fonction. Lorsque je hash mon POST j'ai la bonne chaîne de caractère qui est envoyé dans la fonction, mais la fonction me retourne un false lorsqu'elle interroge la BDD.
J'ai un retour différent de l'envoie. Je n'arrive pas à comprendre pourquoi ma fonction ne prend pas en compte le POST hashé d'autant plus que la chaîne de caractère est bien celle enregistré dans la BDD
Bonjour,
Qu'est ce que ça donne si tu fais un var_dump de "$req->fetch()" ?
Est-ce que tu a essayé de passer ta requête dans un éditeur SQL, comme celui de phpMyAdmin par exemple ?
Hello,
Déjà tu as une incohérence sur tes noms de champs.
Dans ta requête SQL :
Dans ton return php
Comment se nomme ta colonne en base de données ? u_pass ou u_password ?
Comme l'a dit @Soundboy39, si tu lance la requête SQL hors PHP (dans phpMyAdmin par exemple), te ressort-il un résultat ? Es-tu sûr que tes données sont bonnes ? (hashage en sha256, username, nom de colonnes, etc).
Bon après vérification j'avais oublié le FROM users
Cependant le problème persiste. Ce qui est bizarre c'est que ce genre de requete je l'ai déjà faites avec la même syntaxe et j'avais eu aucun problème. Le fait d'avoir ajouter le hash semble faire dysfonctionner la requête.
Dans ma BDD j'ai bien la colonne en "u_password" mais il me semble que tout ce qui a après le = : est un alias pour la construction de l'array.
Et dans phpmyadmin j'ai cette erreur
Hello ,
essai avec ça:
function logmein(array $user): array{
require 'pdo.php';
$u_log = $user[0];
$u_pass = $user[1];
$req = $bdd->prepare('SELECT (log_in, u_password) WHERE log_in = :log_in AND u_password = :u_pass');
$req->execute(array(
'log_in' => $user[0],
'u_pass' => $user[1]
));
$finduser= $req->fetch();
if(!empty ($finduser)){
return [true, $finduser[1]];
}else{
return [false, $finduser[1]];
};
$finduser->closeCursor();
};
Merci Bidulen, mais ça ne marche pas. J'ai l'impression que la variable qui contient le hash du password est pas envoyé à la fonction ou que la fonction la consière comme 0 ou null alors que les var_dump me donne les bonnes infos.
Vraiment bizarre ce problème.
Alors il va falloir m'expliquer un truc que je pige pas. De ce que j'ai compris du dev, du code et du scripting quand on déclare une variable celle-ci vaut la même chose que ce qui a dedans. Alors pourquoi quand je remplace mon array dans l'execute ça marche. En gros quand je mets $user[0] et $user[1] ça ne marche pas et quand je mets les variables préalablement déclaré ça marche. Pourquoi alors que l'un vaut l'autre.
Enfin merci à vous je passe en résolu !