[RESOLU] Login avec mot de "password_hash"

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Login avec mot de "password_hash"

Re: Login avec mot de "password_hash"

par ChrisCMoi62 » 07 mai 2021, 08:40

Bonjour,
J'ai enfin trouvé, le problème venait bien de ma requête

Code : Tout sélectionner

$sql = "SELECT * FROM espace_membres WHERE pseudo='$pseudo'";
Maintenant ça marche :-)
Merci pour votre aide et bonne journée.

Re: Login avec mot de "password_hash"

par ChrisCMoi62 » 07 mai 2021, 08:01

Bonjour,
Du coup j'ai essayé d'interroger la base avec un echo pour voir, il me retour, aucun résultat, donc le problème ne vient pas du hachage mais de la requête, je ne vois vraiment pas pourquoi

Re: Login avec mot de "password_hash"

par ChrisCMoi62 » 06 mai 2021, 20:10

Oui il est bien dans ma base PHPMYADMIN,

Re: Login avec mot de "password_hash"

par ChrisCMoi62 » 06 mai 2021, 20:09

Désole pour l'envoi en double

Re: Login avec mot de "password_hash"

par ChrisCMoi62 » 06 mai 2021, 20:09

J'ai essayé de faire un echo $donnee['pseudo'] pour voir si ça me retournait un résultat mais rien donc à priori ça vient de ma requête mais je en vois pas le problème

Re: Login avec mot de "password_hash"

par Saian » 06 mai 2021, 20:06

Débuguer un script c'est quand même un peu la base. Vérifie ta requête dans phpmyadmin ou autre, vérifie le contenu de $_POST pour t'assurer que tu as bien le pseudo dedans, etc.

Re: Login avec mot de "password_hash"

par ChrisCMoi62 » 06 mai 2021, 20:02

J'ai essayé de faire un echo pour voit le retour, mais rien ne s'(affiche donc on dirait qu'il y a un souci de ma requête

Re: Login avec mot de "password_hash"

par Saian » 06 mai 2021, 20:00

Oui et du coup tu as essayé quoi ?

Re: Login avec mot de "password_hash"

par ChrisCMoi62 » 06 mai 2021, 19:01

Non je l'ai enlevé lol

Code : Tout sélectionner

$sql = "SELECT * FROM espace_membres WHERE pseudo=?";

Re: Login avec mot de "password_hash"

par Saian » 06 mai 2021, 18:30

Apparemment non tu n'as pas compris puisque tu as toujours le password dans le where du select...
$sql = "SELECT * FROM espace_membres WHERE pseudo=:pseudo AND password=:password";

Re: Login avec mot de "password_hash"

par ChrisCMoi62 » 06 mai 2021, 18:23

Oui ça j'ai bien compris, ceci-dit ça ne donne rien, j'ai essayé un echo $donnee['pseudo] pour voir et je me rends compte qu'il ne retourne aucune résultat.

Re: Login avec mot de "password_hash"

par Saian » 06 mai 2021, 17:17

Tu ne dois pas utiliser le password dans la requête select
C'est pourtant clair non ?
// select sur le pseudo SANS le password
// parcours des résultats dans une variable $donnee comme dans ton code (donc un while $donne = "fetch" à moins que le pseudo soit unique et dans ce cas un seul fetch suffit)
// pour chaque résultat on vérifie
if (password_verify($_POST['password'], $donnee['password'])) {
  // utilisateur reconnu
}

Re: Login avec mot de "password_hash"

par ChrisCMoi62 » 06 mai 2021, 16:24

salut Saian, merci pour ta réponse.
Je n'utilise peut-être pas convenablement la fonction password_verfy var rien ne fonctionne :

Code : Tout sélectionner

<?php session_name( 'ALSH' ); session_start(); $message = ''; require_once( 'include/admin/cnx.php' ); if ( isset( $_POST[ 'login' ] ) ) { if ( empty( $_POST[ 'pseudo' ] ) || empty( $_POST[ 'password' ] ) ) { $message = '<p class="erreur">Merci de remplir les champs du formulaire</p>'; } else { $sql = "SELECT * FROM espace_membres WHERE pseudo=:pseudo AND password=:password"; $req = $cnx->prepare( $sql ); $req->execute( array( 'pseudo' => $_POST[ 'pseudo' ], 'password' => $_POST[ 'password' ] ) ); $count = $req->rowcount(); if ( $count > 0 ) { $_SESSION[ 'pseudo' ] = $_POST[ 'pseudo' ]; $donnee = $req->fetch( PDO::FETCH_ASSOC ); $_SESSION[ 'id' ] = $donnee[ 'id' ]; $hash = $donnee[ 'id' ]; if (password_verify($_POST[ 'password' ], $hash)) { header( 'location:form1.php' ); } } else { $message = '<p class="erreur">Accès refusé !</p>'; } } } ?>

Re: Login avec mot de "password_hash"

par Saian » 06 mai 2021, 16:10

Tu ne dois pas utiliser le password dans la requête select puisque tu as hashé le password avant de l'insérer en base.
Il faut rechercher l'utilisateur par le pseudo puis vérifier le mot de passe avec la fonction password_verify en lui fournissant le mot de passe saisi en clair et le hash enregistré dans la base de donneés.

Re: Login avec mot de "password_hash"

par ChrisCMoi62 » 06 mai 2021, 16:07

C'est bizarre quand j'interroge ma requête je n'ai aucun retour,