2016-10-30 2 views
-4

Я пытаюсь настроить регистрационную форму с PHP и sql и для защиты паролем. Я использую password_hash() и password_verify(). Функция password_hash() работает нормально, но когда я пытаюсь проверить пароль с password_verify() хешированным паролем, он возвращает FALSE. Я новичок в PHP и не знаю, почему это происходит.
Вот код:
PHP password_verify не дешифрование?

<?php 
 

 
include 'db.php'; 
 

 
$username = mysqli_real_escape_string($con, $_POST['username']); 
 
$password = mysqli_real_escape_string($con, ($_POST['password'])); 
 

 
$sql = "SELECT * FROM users WHERE `username`= '$username' "; 
 
$query = mysqli_query($con, $sql); 
 

 
while ($rows = mysqli_fetch_array($query)): 
 

 
    $user = $rows['username']; 
 
    $email = $rows['email']; 
 
    $passhash = $rows['password']; 
 

 
endwhile; 
 

 
$hash = password_verify($password, $passhash); 
 
// just echoing so i know they are the correct values 
 
echo $user.'<br>'; 
 
echo $email.'<br>'; 
 
echo $password.'<br>'; 
 
echo $hash.'<br>'; 
 
echo $passhash.'<br>'; 
 

 
if ($hash == 0) { 
 
    echo 'error'; 
 
} 
 

 
?>


EDIT: Заменено 'dehashed' с правильными условиями.

+0

Не все ли смысл хэшировать пароль, чтобы он не мог быть отменен (или деактивирован, как вы его называете)? –

+0

Дехаш? Интересно .... Хэш не обратимо ... – Selvin

+1

Errrr ......... что? DEhashing? когда-либо пытались вернуть быка обратно после того, как его убили и посадили в говядину? хорошо, что вы идете. –

ответ

1
password_verify() 

не «де-хэш» пароль (поскольку хеширование является необратимой функцией). Что он делает, так это то, что он проверяет, может ли данный (unhashed) пароль соответствовать заданному хешу (тогда он возвращает TRUE) или нет (FALSE).

См http://php.net/manual/en/function.password-verify.php

Убедитесь, что пароль, который хранится в столбце базы данных рассчитываются с

password_hash() 

см http://php.net/manual/en/function.password-hash.php иначе, password_verify не будет работать со значением, предоставленным в качестве хэша.

+0

, что уже было определено в комментариях, на которые вы должны обратить внимание. –

+0

Надеюсь, что редактирование сделает мой ответ более полезным! –

+0

ОП, похоже, исчез в воздухе. У меня есть свои взгляды на то, почему они терпят неудачу, но я боюсь, что вас еще больше преследуют в эту кроличью нору. –

Смежные вопросы