Проверка пароля Moodle на внешнем скрипте
У меня Moodle 2.7. Хеши пользователей и пароли хранятся в таблице mdl_user. Я хочу создать внешний скрипт, который может проверять - правильно ли введены логин и пароль.
Как я вижу - в этой версии Moodle для генерирования хэша пароля используется некая функция php, например password_hash().
Моя версия PHP 5.4, поэтому я не могу использовать эту функцию. Поэтому я использую эту библиотеку https://github.com/ircmaxell/password_compat с этим кодом
$password_hash = password_hash( $password , PASSWORD_DEFAULT, array());
Проблема в том, что каждый раз, когда я его вычисляю, хэш меняется. Поэтому я не могу сравнить этот хеш со строкой, которая находится в таблице mdl_user.
1 ответ
Если эта функция похожа на password_hash()
Прирожденный к PHP, соль генерируется вместе с хешем, а соль рандомизируется. Из-за этого, сравнивая результаты 2 отдельных вызовов password_hash()
не собираются совпадать.
Функция, которую вы ищете password_verify()
, который принимает введенный пароль и хэш в базе данных. Если это возвращает true, то пароли совпадают.