IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

PHP - les mots de passes ne correspondent pas


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2020
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2020
    Messages : 119
    Par défaut PHP - les mots de passes ne correspondent pas
    Bonjour,

    Je dois réaliser un blog avec commentaire en PHP et je rencontre un petit soucis :

    Après avoir inséré un nouveau membre dans ma base (avec son pseudo et mot de passe) et qu'ensuite j'essaye de me connecter avec ce membre pour voir si cela fonctionne j'ai un
    message d'erreur.

    J'utilise l'architecture MVC , je vous montre le code :

    La vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     <header>
                <p>Jean FORTEROCHE</p>
                <nav>
                    <ul>
                    <li> <img src="https://img.icons8.com/color/48/000000/home.png"/><a href="">Accueil</a></li>
                    <li> <img src="https://img.icons8.com/color/48/000000/open-book.png"/><a href="">Chapitres</a></li>
                    <li> <img src="https://img.icons8.com/color/48/000000/contact-card.png"/><a href="">Contact</a></li>
                    <li> <img src="https://img.icons8.com/color/48/000000/login-rounded-right.png"/><a href="connexionView.php">Connexion </a> <br>
                        </li>
                    <li> <img src="https://img.icons8.com/color/48/000000/administrator-male--v1.png"/><a href="AdminView.php">Espace administrateur</a></li>
     
                </nav>
     
            </header>
     
                <section class="inscription">
     
                    <form action="../index.php?action=connexion" method="post">
                    <p>Connexion à votre espace</p>
                    <p><img src="../public/img/user.png" alt="user"></p>
                        <p>
                            <label for="pseudo"> <input type="text" name="pseudo" placeholder="Pseudo" required></label>
                            <label for="password"> <input type="text" name="pass"  placeholder="Password" required></label>
                            <input type="submit" id="submit" name="submit" value="Connexion">
                            <span class="inscrire">Pas encore inscrit ? <a class="lien_inscrire" href="">S'inscrire</a></span>
                        </p>
                    </form>
                </section>
     
            <footer></footer>
        </div>

    le Modèle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <!--CONNEXION-->
    <?php
    require_once("Manager.php");
     
     
    function getConnexion() {
        $db = dbConnect();
        $req = $db->prepare('SELECT id, pass FROM members WHERE pseudo = ?');
        $req->execute(array($_POST['pseudo']));
        $login = $req->fetch();
        return $login;
    }


    Le contrôleur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    <?php
     
    function userLogged() {
        require(__DIR__ . '/../model/connexionManager.php');
        $login = getConnexion();
     
        if (isset($_POST['pseudo']) && !empty($_POST['pseudo'])) {
            if (isset($_POST['pass']) && !empty($_POST['pass'])) {
                $isPasswordCorrect = password_verify($_POST['pass'], $login['pass']);
                var_dump($isPasswordCorrect);
                if (!$login) {
                    print 'Mauvais identifiant ou mot de passe !';
                } else {
                    if (!$isPasswordCorrect) {
                        echo 'Mauvais identifiant ou mot de passe !';
     
                    } else {
                        print "Vous êtes connecté !";
                        $_SESSION['id'] = $password['id'];
                        $_SESSION['loggedin'] = true;
                        $_SESSION['pseudo'] = $_POST['pseudo'];
                        require(__DIR__ . '/../view/postsView.php');
                    }
                }
            }else {
                print "Veuillez saisir un mot de passe";
            }
        } else {
            print "Veuillez remplir ce champs !";
        }  
    }
    Et le routeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    session_start();
    require('Controller/Controller_AdminConnexion.php');
     
    if (isset($_GET['action'])) {
     
        if ($_GET['action'] == 'connexion') {
        userLogged();
        }
    } else {
        listPosts();
    }


    et voici ma table :
    Nom : table.png
Affichages : 131
Taille : 39,8 Ko



    Et le message d'erreur provient exactement d'içi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                    if (!$isPasswordCorrect) {
                        echo 'Mauvais identifiant ou mot de passe !';
     
                    }
    var_dump affiche ceci "C:\ProgramFiles\wamp\www\Projet4\controller\Controller_connexion.php:10:boolean false"

    Visiblement les 2 mots de passes ne correspondent pas alors que j'ai bien rentré dans le formulaire le bon mot de passe. Je ne vois pas du tout où est l'erreur.....

    Merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Il nous faudrait la fonction verify_password()

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2020
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2020
    Messages : 119
    Par défaut
    Merci pour ta réponse,
    je n'ai pas de fonction verify_password(), à moins que tu parles de cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $isPasswordCorrect = password_verify($_POST['pass'], $login['pass']);

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Après avoir inséré un nouveau membre dans ma base (avec son pseudo et mot de passe)
    Par quel moyen l'as-tu inséré? Par ce que mis à part l'utilisateur Mike dont la colonne pass ressemble bien à une clé de hachage, j'ai l'impression que les utilisateurs John, Lunesti et Bryan ont pour cette même colonne des mots de passes "en clair" (vue la taille des coups de marqueur). D'après moi c'est signe qu'ils n'ont pas été hachés avec password_hash() avant d'être insérés dans la table. C'est peut-être pour cette raison que password_verify() renvoie false (puisqu'elle est censée comparer un mot de passe avec sa clé de hachage).

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2020
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2020
    Messages : 119
    Par défaut
    Effectivement, je les avait créé directement depuis phpmyadmin du coup il n'y avait pas de hachage et c'est pourquoi ça renvoyait false

    Donc j'ai créé un membre via mon code et maintenant ça fonctionne.

    Par contre, je suis obligé de faire un var_dump à chaque fois pour récupérer le mot de passe haché, et ensuite le mettre dans ma base ? il n'y a pas plus simple ? par exemple hacher le mot de passe automatiquement une fois que l'utilisateur s'est inscrit ...

    en tout cas merci pour ta réponse

Discussions similaires

  1. [PHP 5.4] Réutiliser les mots de passe ASP.NET C# MVC5 des utilisateurs avec PHP
    Par vg-matrix dans le forum Langage
    Réponses: 1
    Dernier message: 17/03/2018, 19h11
  2. coder les mots de passe des membres ou pas ?
    Par Invité dans le forum Sécurité
    Réponses: 3
    Dernier message: 28/07/2011, 18h20
  3. comment crypter les mots de passe?
    Par JauB dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/11/2005, 16h37
  4. cacher les mots de passes...
    Par youp_db dans le forum C
    Réponses: 7
    Dernier message: 21/10/2005, 00h06
  5. Le dossier qui stock les mots de passe
    Par cartonis dans le forum Sécurité
    Réponses: 21
    Dernier message: 17/08/2005, 12h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo