par
Ryle » 26 avr. 2015, 10:01
Je crois que tu as un problème de logique dans ta page de connexion... Quand tu vas chercher en base la correspondance tu utilises cette requête avec le mot de passe spécifié par l'utilisateur :
$passe_admin = htmlspecialchars(trim($_POST['pass']));
...
$connexion_accepter = $connexion_base_de_donnees->prepare("SELECT * FROM admin WHERE mdp = :pass");
$connexion_accepter->bindParam(':pass', $passe_admin);
Le problème, c'est qu'en base, ce n'est pas le mot de passe de l'utilisateur que tu as stocké, mais le hash :
$passe_admin = htmlspecialchars(trim($_POST['pass']));
$hash = password_hash($passe_admin, PASSWORD_BCRYPT, ['cost' => 12]);
...
$connexion_accepter = $connexion_base_de_donnees->prepare("INSERT INTO admin (mdp) VALUES (:pass)");
$connexion_accepter->bindParam(':pass', $hash);
Ton select ne va donc trouver aucune correspondance et la comparaison de valeur ne donnera rien.
Dans la logique il faudrait soit que fasses une requête basée sur le login pour ramener le mot de passe crypté, et faire ensuite ta verif; ou bien crypter le mot de passe spécifié par l'utilisateur avant de faire la requête (auquel cas tu fais la comparaison en SQL et contrôle qu'il y a bien des résultats)

Je crois que tu as un problème de logique dans ta page de connexion... Quand tu vas chercher en base la correspondance tu utilises cette requête avec le mot de passe spécifié par l'utilisateur :
[php]$passe_admin = htmlspecialchars(trim($_POST['pass']));
...
$connexion_accepter = $connexion_base_de_donnees->prepare("SELECT * FROM admin WHERE mdp = :pass");
$connexion_accepter->bindParam(':pass', $passe_admin);[/php]
Le problème, c'est qu'en base, ce n'est pas le mot de passe de l'utilisateur que tu as stocké, mais le hash :
[php]$passe_admin = htmlspecialchars(trim($_POST['pass']));
$hash = password_hash($passe_admin, PASSWORD_BCRYPT, ['cost' => 12]);
...
$connexion_accepter = $connexion_base_de_donnees->prepare("INSERT INTO admin (mdp) VALUES (:pass)");
$connexion_accepter->bindParam(':pass', $hash);[/php]
Ton select ne va donc trouver aucune correspondance et la comparaison de valeur ne donnera rien.
Dans la logique il faudrait soit que fasses une requête basée sur le login pour ramener le mot de passe crypté, et faire ensuite ta verif; ou bien crypter le mot de passe spécifié par l'utilisateur avant de faire la requête (auquel cas tu fais la comparaison en SQL et contrôle qu'il y a bien des résultats) :)