2015-08-22 1 views
0

Je suis complètement nouveau dans les fonctions password_hash et verify, mais j'ai lu les documentations à leur sujet sur le site web php par défaut. J'ai des problèmes avec la connexion lorsque je hash mots de passe en utilisant password_hash. Ils sont déjà hachés dans la base de données.password_verify ne semble pas fonctionner

Ceci est mon code, j'utiliser pour vérifier si le mot de passe entré sous la forme correspond à la valeur de hachage dans la base de données (qui a été généré avec password_hash sous forme de registre):

$username = $kunaiDB->real_escape_string($_POST["uname"]); 
    $password = $kunaiDB->real_escape_string($_POST["pword"]); 

    $kunaiLoginQuery = "SELECT * FROM kunai_users"; 

    $kunaiLoginQueryResult = $kunaiDB->query($kunaiLoginQuery); 
    $controlhash = $kunaiLoginQueryResult->fetch_array(); 
    $db_pw_res = $controlhash["user_pw"]; 

    if(password_verify($password, $db_pw_res)) { 
     echo "Passwords match!"; 
    } else { echo "Passwords do not match!"; } 

Chaque fois que je me connecte il échoue. J'ai essayé de chercher des solutions similaires, mais jusqu'à présent, je n'ai rien trouvé qui fonctionne. Toute l'aide est appréciée :-)

Répondre

0

Leur erreur est dans votre requête SQL. Ajoutez une clause WHERE. Quelque chose comme ça

SELECT * from table_name WHERE user_name_field = '{$username}' 

Et au lieu de

$controlhash = $kunaiLoginQueryResult->fetch_array(); 

Type de

$controlhash = $kunaiLoginQueryResult->fetch_assoc(); 
+0

Mon mauvais, merci pour l'aide! –

+0

Votre bienvenue. Envisagez de voter et de marquer la bonne réponse. –