Страница 1 из 1

[FAQ] Преобразование паролей при конвертации

Добавлено: 30.10.2007 9:15
parfenov
Вопрос:
Добрый день. Конвертировал базу 2.0.22 в RC7. После этого некоторые пользователи при вводе пароля получают такую фразу:
При обновлении конференции не удалось преобразовать ваш пароль. Вы можете запросить новый пароль. Если вы продолжаете испытывать трудности, то свяжитесь с администратором конференции.
Если в админке поменять данному пользователю пароль вручную, или поменять его ник на другой, это не помогает. Принудительное повторное подтверждение активации тоже ничего не меняет.

Ответ:
Такая ошибка существует по крайней мере в phpBB3RC7. Для исправления:
Открыть includes/ucp/ucp_activate.php
НАЙТИ

Код: Выделить всё

if ($update_password)
        {
            $sql_ary = array(
                'user_actkey'        => '',
                'user_password'        => $user_row['user_newpasswd'],
                'user_newpasswd'    => ''
            );

            $sql = 'UPDATE ' . USERS_TABLE . '
ЗАМЕНИТЬ НА

Код: Выделить всё

if ($update_password)
        {
            $sql_ary = array(
                'user_actkey'        => '',
                'user_password'        => $user_row['user_newpasswd'],
                'user_newpasswd'    => '',
                'user_pass_convert'     => 0,
            );

            $sql = 'UPDATE ' . USERS_TABLE . '
Затем выполнить следующий SQL-запрос:

Код: Выделить всё

UPDATE `phpbb_users` SET `user_pass_convert` = '0'
(измените префикс phpbb_ на соответствующий вашему форуму).

Добавлено: 13.01.2008 21:21
boriss
Хочу поделиться своим опытом по решению данной проблемы.
При конвертации, нужно выбрать английский язык, тогда всё конвертируется без проблем и старые пассы работают.

Добавлено: 07.03.2008 19:24
Parshuto
англ. язык где выбрать? В конвертовалке или в старом форуме?

Re: [FAQ] Преобразование паролей при конвертации

Добавлено: 28.12.2008 21:52
nissin
После конвертации форума не работают пароли на кириллице.
Предлагаю небольшой хак для решения проблемы.
файл includes/auth/auth_db.php
Найти:

Код: Выделить всё

		set_var($password_new_format, stripslashes($password_old_format), 'string');
Заменить:

Код: Выделить всё

		set_var($password_new_format, stripslashes($password_old_format), 'string', true);
Найти:

Код: Выделить всё

			if ((strlen($row['user_password']) == 34 && (phpbb_check_hash(md5($password_old_format), $row['user_password']) || phpbb_check_hash(md5(utf8_to_cp1252($password_old_format)), $row['user_password'])))
				|| (strlen($row['user_password']) == 32  && (md5($password_old_format) == $row['user_password'] || md5(utf8_to_cp1252($password_old_format)) == $row['user_password'])))
Заменить:

Код: Выделить всё

			if ((strlen($row['user_password']) == 34 && (phpbb_check_hash(md5($password_old_format), $row['user_password']) || phpbb_check_hash(md5(utf8_to_cp1252($password_old_format)), $row['user_password']) || phpbb_check_hash(md5(iconv('utf-8','windows-1251',$password_old_format)), $row['user_password'])))
				|| (strlen($row['user_password']) == 32  && (md5($password_old_format) == $row['user_password'] || md5(utf8_to_cp1252($password_old_format)) == $row['user_password'] || md5(iconv('utf-8','windows-1251',$password_old_format)) == $row['user_password'])))
После этого пароли на кириллице воспринимаются нормально.
Для работы требуется поддержка iconv в php (как правило обычно включена).

Re: [FAQ] Преобразование паролей при конвертации

Добавлено: 15.11.2013 14:37
mazurik
Друзья, я так и не понял, какой метод пользовать? Тот что в шапке, или то что в последнем посте???

Re: [FAQ] Преобразование паролей при конвертации

Добавлено: 16.11.2013 3:50
Пчелкин
Верхняя правка хороша была до 3.0.7...значит нижняя...