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 :

Changer le Hash sha512 de mon Code en Hash BCRYPT


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 453
    Par défaut Changer le Hash sha512 de mon Code en Hash BCRYPT
    Bonjour.

    Mon code était hashé en sha512 (LIGNE 13 en commentaire du code ci-dessous).
    Mais j'ai décidé de changer le système de Hashage en bcrypt(LIGNE 14 du code ci-dessous)en me basant sur la librairie: https://github.com/ircmaxell/password_compat.

    Ceci a bien fonctionné pour les inscriptions car mon constat est que dans ma BDD, les Mots de passe sont bien hashés en bcrypt.
    Mais mon souci actuel se pose au niveau de la connexion qui ne cesse de me renvoyer l'erreur CONNEXION IMPOSSIBLE disponible à la LIGNE 32 dans mon code
    de traitement du formulaire de la connexion (ci-dessous) à chaque fois que je veux me connecter:

    VOICI MON CODE PHP POUR LA CONNEXION :::

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <?php
     
    require_once('password.php');
     
    function doLogin()
    {
    	$errorMessage = '';
     
    	$accno 	= htmlspecialchars((int)$_POST['accno']);
    	$pwd 	= htmlspecialchars($_POST['pass']); // pass en clair
     
    	// ici on le hash avec PHP et on oublie SQL
    //	$pwd_hash = hash('sha512',$pwd); //Hash en sha512
    	$pwd_hash = password_hash($pwd, PASSWORD_DEFAULT); //Hash en bcrypt avec l'appel de la librairie === require_once('password.php'); === ci-dessus.
     
    	$sql = 'SELECT u.fname, u.lname, u.email, u.is_active, u.phone,
    			a.acc_no, a.user_id, a.pin, a.type, a.status,
    			ad.address, ad.city, ad.state, ad.zipcode
    			FROM tbl_users u, tbl_accounts a, tbl_address ad
    			WHERE a.acc_no = ? AND u.pwd = ?
    			AND u.id = a.user_id AND ad.user_id = u.id AND u.is_active != ?';
    	$result = dbQuery($sql,$accno,$pwd_hash,"FALSE"); 
     
    	if (dbNumRows($result) == 1) {
    		$row = dbFetchAssoc($result); 
    		$_SESSION['hlbank_tmp'] = $row;
    		$_SESSION['hlbank_user_name'] =	strtoupper( $row['fname'].' '.$row['lname']);
    		header('Location: pin.php');
    		exit;
    	}
    	else {
    		$errorMessage = 'CONNEXION IMPOSSIBLE';
    	}
    	return $errorMessage;
    }
     
    // CODE FONCTION "dbNumRows($result)"  et "dbFetchAssoc($result)"
     
    function dbFetchAssoc($result)
    {
    	return $result->fetch(PDO::FETCH_ASSOC);
    }
     
    function dbNumRows($result)
    {
    	return $result->rowCount();
    }

    C'est vrai qu'en suivant le Tuto que j'ai vu sur le Hash bcrypt (https://notes-de-cours.com/web/blogu...taire-sous-php), il est mentionné que pour vérifier le mot de passe lors d'une connexion, il faut faire une condition sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    password_verify('mon-password', $hash)

    Mais dans mon cas, je pense que je devais d'abord hashé avant de faire un SELECT comme dans mon code ci-dessus.

    Alors, aidez-moi à corriger cette erreur qui m'empêche de me connecter en renvoyant le message d'erreur CONNEXION IMPOSSIBLE ???

    Merci d'avance.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Il faut effectivement utiliser password_verify pour faire la vérification. Pour cela, il faut récupérer le mot de passe haché dans la base et l'injecter dans la fonction avec le mot de passe tel qu'il est reçu du formulaire, sans le hacher d'abord.

    Ce qui donne quelque chose comme ça :
    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
    $sql = 'SELECT u.fname, u.lname, u.email, u.is_active, u.phone,
            u.pwd,
            a.acc_no, a.user_id, a.pin, a.type, a.status,
            ad.address, ad.city, ad.state, ad.zipcode
            FROM tbl_users u, tbl_accounts a, tbl_address ad
            WHERE a.acc_no = ? 
            AND u.id = a.user_id AND ad.user_id = u.id AND u.is_active != ?';
    $result = dbQuery($sql,$accno,"FALSE"); 
     
    if (dbNumRows($result) == 1) {
        $row = dbFetchAssoc($result); 
        // on vérifie le mot de passe : 
        if (password_verify($pwd, $row['pwd'])) {
            // youpi le mot de passe est correct
            $_SESSION['hlbank_tmp'] = $row;
            $_SESSION['hlbank_user_name'] = strtoupper( $row['fname'].' '.$row['lname']);
            header('Location: pin.php');
            exit;
        } else {
            $errorMessage = 'CONNEXION IMPOSSIBLE'; // mot de passe incorrect
        }
     
     
    }
    else {
        $errorMessage = 'CONNEXION IMPOSSIBLE'; // on a pas trouvé l'utilisateur
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 453
    Par défaut
    Ok merci Celira, je ne suis pas sur mon PC de travail mais je corrigerai dès mon retour à la maison. Grand merci.

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/03/2018, 17h19
  2. Réponses: 2
    Dernier message: 26/11/2017, 10h26
  3. comment changer l'image inseré dans mon crystal reports par code?
    Par rochdi123 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 04/06/2009, 13h52
  4. Probleme avec mon code : Comment changer de JPanel
    Par serialkilled dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 17/12/2006, 10h13
  5. [langage] algo de bissection dans mon code
    Par killy dans le forum Langage
    Réponses: 5
    Dernier message: 19/01/2004, 18h35

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