2014-01-16 3 views
0

How do you use bcrypt for hashing passwords in PHP?.Как вы проверяете пароли пользователей, поданные с помощью хэша bcrypt?

Отправка паролей к MySQL с помощью:

$options = array('cost' => 11); 
    $password = password_hash("$_POST[password]", PASSWORD_BCRYPT, $options); 

Пароль в MySQL показывает, как:

mysql> SELECT password FROM users; 
+-----------------------------------------------+ 
| password          | 
+-----------------------------------------------+ 
| $2y$11$O77omA4vaNKu0DScTXCBd.FSXKSV0PD0piEokV | 
+-----------------------------------------------+ 

На стороне входа:

$hash = $row['password']; 
$password = $_POST[password]; 

if (password_verify($password, $hash)) { 
echo 'Password is valid!'; 
} else { 
echo 'Invalid password.'; 
} 

Логин не работает, и всегда показывает :

Неверный пароль.

Я вставил соответствующие части, поскольку файлы довольно большие. Если требуется больше (возможно, не актуально), я могу вставить.

+0

@jszobody Существует. – user2656114

+0

У вас есть что-то еще в вашем коде где-то в другом месте. Код, который вы опубликовали, отлично работает: http://3v4l.org/lmK9f – jszobody

+0

@jszobody Действительно, столбец MySQL был недостаточно длинным * face palm *. Это было в 45 лет до этого, я изменил его до 60. Есть ли какая-то «предложенная» длина или что-то, что могло бы предотвратить любые будущие проблемы? – user2656114

ответ

2

Я думаю, это потому, что длина колонны ... С помощью этих параметров, сгенерированный пароль будет иметь 60 символов, возвращаемые один меньше, вы можете показать свою структуру таблицы?

PHP документация сказал:

... Поэтому, рекомендуется сохранять результат в столбце базы данных, который может расширяться за пределы 60 символов (255 символов будет хорошим выбором) ...

Смотрите на: http://www.php.net/manual/pt_BR/function.password-hash.php

-1
if(crypt($user_password, $databse_password)==$databse_password) 
    { validate login} 
else 
    {reject login} 
+0

Почему -1? Я действительно использую его. – datelligence

+0

Вы должны добавить к нему текст ;-) –

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