Problème requête SQL
Résolu
Yougo120
Messages postés
24
Statut
Membre
-
Yougo120 Messages postés 24 Statut Membre -
Yougo120 Messages postés 24 Statut Membre -
Bonjour j'ai crypté un mot de passe avec password_hash que j'ai mis dans ma base de données et lorsque je veux le récupérer, j'ai : "Array ( [motdepasse] => " qui se met devant et une parenthèse à la fin ce qui m'empêche de valider mon mot de passe avec password_verify, qui lui marche, car lorsque je met directement le mot de passe crypté au lieu de la variable, ça marche parfaitement ! le code:
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
try{
$db = new PDO('mysql:host=****;dbname=****', '****','****');
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // les noms de champs seront en caractères minuscules
$db->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION); // les erreurs lanceront des exceptions
global $db;
}catch(Exception $e)
{
echo 'Problème: ' . $e->getMessage();
}
if(isset($_POST['formconnexion'])) {
$mailconnect = $_POST['mailconnect'];
$mdpconnect = $_POST['mdpconnect'];
echo $mailconnect; //c'est juste une vérification personnelle
$req = $db->prepare("SELECT motdepasse FROM membres WHERE mail = '$mailconnect'");
$req->execute(array('motdepasse'));
$usermdp = $req->fetch(PDO::FETCH_ASSOC);
print_r($usermdp); //c'est juste une vérification personnelle
if(password_verify($mdpconnect, $usermdp)){
echo'oui';
}else{
echo'non';
}
?>
3 réponses
-
Bonjour
Tu récupères un array associatif...
Donc il faut utiliser$usermdp['motdepasse']
-
Salut !
Si tu regardes bien, t'as marqué n'importe quoi...$req = $db->prepare("SELECT motdepasse FROM membres WHERE mail = '$mailconnect'"); $req->execute(array('motdepasse')); $usermdp = $req->fetch(PDO::FETCH_ASSOC);
Pourquoi une requête préparée alors que tu ne mets aucun paramètres ?
Ton "execute" ne sert à rien...
Je t'invite à regarder ceci pour les requêtes préparées.
http://php.net/manual/fr/pdo.prepared-statements.php
Je crois que tu cherches à faire ça.$mailconnect = $_POST['mailconnect']; $mdpconnect = $_POST['mdpconnect']; echo $mailconnect; //c'est juste une vérification personnelle $req = $db->prepare("SELECT motdepasse FROM membres WHERE mail = ?"); $req->execute(array($mailconnect)); $usermdp = $req->fetch(PDO::FETCH_ASSOC); print_r($usermdp['motdepasse']); //c'est juste une vérification personnelle -
A côté des réponse, petit conseil :
Quand tu postes un code, retire les identifiants et MDP d'accès à la BDD (et autre aussi), c'est mieux pour ta sécurité ;)