У меня есть PHP версии 5.4 на моем ПК, поэтому я не могу использовать password_hash()
и я использовал crypt()
вместо.
Но следующая проблема — как проверить пароли, если они совпадают?
В документации PHP сказано, что если вы используете crypt()
лучший способ использовать в качестве модификатора пароля hash_equals()
но только PHP 5.5.
Я всегда получаю:
Неустранимая ошибка: вызов неопределенной функции hash_equals () в …
Как вы упоминали, php 5.4 пока не имеет этих функций, поэтому у вас есть две возможности использовать эти очень полезные функции:
Лучший способ:
Обновите до php 5.5 / 5.6 и используйте тогда нативную библиотеку
Если это невозможно:
Вы можете использовать эту библиотеку:
https://github.com/ircmaxell/password_compat
Библиотека обеспечивает прямую совместимость с функциями password_ *, над которыми работали в PHP 5.5.
Вы можете просто сравнить их оба так:
<?php
$the_password= crypt('12345', 'aasddas');
$user_entered_pass='125';
if(crypt($user_entered_pass,'aasddas') == $the_password){
echo "right";
}else{
echo "wrong";
}
?>
Короткий ответ: вот что password_compat для, так что используйте его.
В документации PHP сказано, что если вы используете
crypt()
лучший способ использовать в качестве модификатора пароляhash_equals()
но только PHP 5.5.
crypt()
вы используете password_hash()
с password_verify()
.hash_equals()
был добавлен в PHP 5.6, а не 5.5.