У DLE 11.3 новая система паролей. Но заменяет в БД их так что пароли не работают, что делать?

Всем привет , сайт на DLE 11.3 UTF-8 . Раньше сайт был на 10.3 Win-1251 сделал бекап из старой через средства админки DLE . И установил их в новую вроде кодировка сменилась и все отображается как надо но так как на новой DLE новая система паролей то при авторизации пароль система переделает на новый более безопасный , проблема в том что она переделывается пароль который после не работает . То есть пароль был например

qwerty123 в двойном MD5 этот пароль будет таким (0b04beb06f3e0bdc6f99e91070fb987a) и в БД он стоит у пользователя из после установки бекапа от старой БД об этом писал выше . Соотвественно после авторизации пароль будет другим по новой системе , становится он вот таким

$2y$10$6xyK05lFF7bVoHLie.5TtOgq3

Проблема в том что после этого пароль qwerty123 уже не подходит и соответственно выходит ошибка о том что пароль неверный . Как решить эту проблему? Думаю что проблема из-за того что бекап от WIn-1251 установлен на UTF-8 DLE но остальные данные отображаются и видно что с ними все нормально и система их перекодировала .
  • Вопрос задан
  • 263 просмотра
Пригласить эксперта
Ответы на вопрос 1
Exomode
@Exomode
Архитектор ПО
Вам нужно убедиться, что данные, приходящие с формы авторизации, в старой кодировке Win-1251, тогда при проверке пароли должны совпадать, т.к. хэшироваться должны те же наборы байт, что раньше приходили на старой версии движка с формы в кодировке Win-1251. Кроме того, при проверке кодировка хэша так же должна совпадать с той, в которой будет результат md5(). Можно воспользоваться методом mb_convert_encoding(). Если надо удалить BOM, можно после конвертации в кодировку сделать примерно так:
$bom = pack("H*", "EFBBBF");
$string = preg_replace("/^$bom/", '', $string);

Надеюсь, мои заметки вам помогут решить проблему.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы