PHP

Vérification du mot de passe

Résolu

Bonjour à tous.


Encore un petit soucis de Noob pour moi..

J'aimerais vérifier l'user et le mot de passe de ma base de données pour une connexion.

Cependant j'ai toujours le message "Vérifiez vos identifiants".

Je bloque depuis ce matin.. Ne faite pas trop attention au bordel c'est juste une page d'entrainement , j'apprend encore actuellement 😂


 <?php
      // 1 On verifie que le formulaire est valide
      if(isset($_POST['connectForm']))
      {
           $usernameConnect = htmlspecialchars($_POST['usernameConnect']);
            $passwordConnect = password_hash($_POST['passwordConnect'], PASSWORD_DEFAULT);
         //2 On verifie que les champs ne sont pas vide
         if(!empty($_POST['usernameConnect']) AND !empty($_POST['passwordConnect']))
         {
            //3  On verifie que l'utilisateur et le mot de passe entré existent


            $requser = $bdd -> prepare('SELECT * FROM utilisateurs WHERE username = ? AND password = ?');


            $requser -> execute(array($usernameConnect, $passwordConnect));


            $userExiste = $requser -> rowCount();
            //4 Si l'utilisateur existe alors
            if($userExiste == 1) 
            {
              $msgErreur ="YES";
            }
      //4
      else 
      {
            $msgErreur = ' Verifiez vos identifiant !';
         }
         }
      //2
      else
         {
            $msgErreur ='Veuillez completez les champs !';
         }
      }
      // 1
      else 
      {
         echo '';
      }




      ?>
478 vues
13 juillet 2020 à 3:11 (Édité)
Cette pub permet au site de vivre ...

Hello @DimitriAFC,


D’abord, assures-toi que tes mots de passe sont stockés dans la base de données à l’aide de la fonction password_hash(). (Voir la documentation concernant password_hash()).

Supposons que les identifiants de l’utilisateur proviennent d’une requête POST, voici le code dont tu as besoin :


<?php
$query = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$query->execute([$_POST['email']]);
$user = $query->fetch();
if ($user && password_verify($_POST['pass'], $user['pass']))
{
    echo "Identifiant valide !";
}
else
{
    echo "Identifiant invalide !";
}
?>


  • Dans la première ligne, on crée une instruction préparée PDO, à partir d’une requête dans laquelle les données sont remplacées par un point d’interrogation (?).
  • Dans la deuxième ligne, on exécute la requête.
  • A la troisième ligne, on récupère une ligne d’une table.
  • La ligne suivante, on vérifie à la fois si la requête a retourné des données, et si c’est le cas, on vérifie le mot de passe.


J'espère que cela pourra t'aider à te mettre sur la voie 😉

Cette pub permet au site de vivre ...

4 commentaires

ça marche, j'attendais juste ta réponse ! 😃

Encore merci !

Re:


Pas de soucis ! 😁

Je suis ravis d'avoir pu résoudre ton problème, si tu n'as plus de problèmes, tu peux mettre le topic en "Résolu" 😁

Hello @Jerem971, que dire.. Encore une fois merci ! Tout simplement ! Avec t'es explications je me rend compte que j'ai voulu aller trop vite et que j'aurais du faire au plus simple ! En effet, c'était le password_verify. Comme je ne verifie pas le mot de passe entré avec celui qui est stocké dans ma BDD mon scripte annonce une erreur !


Encore merci, ça fonctionne très bien.

Hello @DimitriAFC,


D’abord, assures-toi que tes mots de passe sont stockés dans la base de données à l’aide de la fonction password_hash(). (Voir la documentation concernant password_hash()).

Supposons que les identifiants de l’utilisateur proviennent d’une requête POST, voici le code dont tu as besoin :


<?php
$query = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$query->execute([$_POST['email']]);
$user = $query->fetch();
if ($user && password_verify($_POST['pass'], $user['pass']))
{
    echo "Identifiant valide !";
}
else
{
    echo "Identifiant invalide !";
}
?>


  • Dans la première ligne, on crée une instruction préparée PDO, à partir d’une requête dans laquelle les données sont remplacées par un point d’interrogation (?).
  • Dans la deuxième ligne, on exécute la requête.
  • A la troisième ligne, on récupère une ligne d’une table.
  • La ligne suivante, on vérifie à la fois si la requête a retourné des données, et si c’est le cas, on vérifie le mot de passe.


J'espère que cela pourra t'aider à te mettre sur la voie 😉

Cette pub permet au site de vivre ...