Центр пользователя  |  Ваши сообщения  |  FAQ
Форум поддержки phpBB » phpBB 3.0.x » Интеграция и конвертирование

Конвертация из IPB 2.1.7 в phpBB3

Взаимодействие phpBB 3.0.x с другими системами.
Пожалуйста, помните, что существуют: Поиск, Правила форума
Возможно, ответ на Ваш вопрос уже имеется: Документация, Статьи, Накопленный опыт
Полезные материалы по этой теме: Конвертеры

Сообщение 10 сен 2009, 18:37

Хорошо. Так и сделаю.
А в БД русские слова в базе phpbb2 крякобяками. Пробовала сменить кодировку - русскими слова все равно не становятся.
Tigrik
Активный участник
 
Сообщений: 86
Зарегистрирован:
09 сен 2009, 19:31
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение 11 сен 2009, 11:20

Сменила в файле lang_main.php форума phpbb2 кодировку
$lang['ENCODING'] = 'utf-8';
Форум phpbb3 стал на русском.

Вопрос по паролям. Неужели нет решения, чтобы и пароли перенеслись? Просто многие психанут и уйдут вообще с форума.
Tigrik
Активный участник
 
Сообщений: 86
Зарегистрирован:
09 сен 2009, 19:31
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение 24 июл 2010, 16:18

phpBB3 конвертер в IPB.
kinder

 

Сообщение 24 июл 2010, 16:25

як перенести базу з phpBB3 в IPB

може хтось підсказати?
kinder

 

Сообщение 13 сен 2010, 11:29

Добрый день!

Поставлена Задача перенести форум IPB 2.1.7 c Блогами, Галереей, Репутацией, Чатом на площадку phpBB3

Что уже сделано:
Перенос IPB 2.1.7 в phpBB2
Перенос phpBB2 в phpBB3 (BB3x Expand)

Что необходимо:
Преобразовать пароли IPB в вид phpBB3 ( md5(md5($salt).md5($pass)) )
$salt - это поле из таблицы с одноименным названием
$pass - это вводимый пароль пользователя при заходе на форум

Я не курю в php поэтому прошу помощи у знающих людей. Есть же готовое решение для phpBB2.

Спасибо.
Dangerous

 

Сообщение 13 сен 2010, 12:52

Dangerous
а кто сказал что у phpbb3 шифрование md5
crash
Поддержка
 
Сообщений: 11348
Зарегистрирован:
27 янв 2009, 03:22
Благодарил (а): 1 раз.
Поблагодарили: 568 раз.

Сообщение 13 сен 2010, 13:30

В phpBB3 три метода хеширования паролей Multiple Runs, Salted, MD5

В общем есть ли варианты безболезненно восстановить пользователям пароли?
Dangerous

 

Сообщение 14 сен 2010, 10:48

Кто нибудь проделывал такой метод : IPB 2.1.7 -> IPB 2.3.6 -> phpBB3

В таком разе проблем с переносом будет меньше или больше ?
Dangerous

 

Сообщение 15 сен 2010, 16:02

Говорю сам с собой.. Ладно... Предыдущий вариант не проканал... Почему-то не перенеслись пользователи из IBP 2.3.6

Остановился на варианте IPB 2.1.7 -> phpBB2 -> phpBB3

Для авторизации использовал метод IPB
Создал столбец в таблице users куда в последующем вставил SALT
Код: выделить все
# Создаю столбец в таблице users
ALTER TABLE `phpbb3_users` ADD `user_passwd_salt` VARCHAR( 5 ) NOT NULL DEFAULT '';
# Вставляю хэш и салт с IPB форума
UPDATE
ipb_forum_members_converge ipb,
phpbb3_users p3
SET
p3.user_passwd_salt=ipb.converge_pass_salt,
p3.user_password=ipb.converge_pass_hash
WHERE ipb.`converge_id`=p3.user_id


В forum/includes/aut добавил скрипт аутификации найденый на просторах интернета, название ему auth_ipb.php
Код: выделить все
<?php
/**
* Database auth plug-in for phpBB3
*
* Authentication plug-ins is largely down to Sergey Kanareykin, our thanks to him.
*
* This is for authentication via the integrated user table
*
* @package login
* @version $Id: auth_db.php 8479 2008-03-29 00:22:48Z naderman $
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
        exit;
}

/**
* Login function
*/
function login_ipb(&$username, &$password)
{
        global $db, $config;

        // do not allow empty password
        if (!$password)
        {
                return array(
                        'status'        => LOGIN_ERROR_PASSWORD,
                        'error_msg'     => 'NO_PASSWORD_SUPPLIED',
                        'user_row'      => array('user_id' => ANONYMOUS),
                );
        }

        if (!$username)
        {
                return array(
                        'status'        => LOGIN_ERROR_USERNAME,
                        'error_msg'     => 'LOGIN_ERROR_USERNAME',
                        'user_row'      => array('user_id' => ANONYMOUS),
                );
        }

        $sql = 'SELECT user_id, username, user_password, user_passchg, user_pass_convert, user_email, user_type, user_login_attempts, user_passwd_salt
                FROM ' . USERS_TABLE . "
                WHERE username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'";
        $result = $db->sql_query($sql);
        $row = $db->sql_fetchrow($result);
        $db->sql_freeresult($result);

        if (!$row)
        {
                return array(
                        'status'        => LOGIN_ERROR_USERNAME,
                        'error_msg'     => 'LOGIN_ERROR_USERNAME',
                        'user_row'      => array('user_id' => ANONYMOUS),
                );
        }

        // If there are too much login attempts, we need to check for an confirm image
        // Every auth module is able to define what to do by itself...
        if ($config['max_login_attempts'] && $row['user_login_attempts'] >= $config['max_login_attempts'])
        {
                $confirm_id = request_var('confirm_id', '');
                $confirm_code = request_var('confirm_code', '');

                // Visual Confirmation handling
                if (!$confirm_id)
                {
                        return array(
                                'status'                => LOGIN_ERROR_ATTEMPTS,
                                'error_msg'             => 'LOGIN_ERROR_ATTEMPTS',
                                'user_row'              => $row,
                        );
                }
                else
                {
                        global $user;

                        $sql = 'SELECT code
                                FROM ' . CONFIRM_TABLE . "
                                WHERE confirm_id = '" . $db->sql_escape($confirm_id) . "'
                                        AND session_id = '" . $db->sql_escape($user->session_id) . "'
                                        AND confirm_type = " . CONFIRM_LOGIN;
                        $result = $db->sql_query($sql);
                        $confirm_row = $db->sql_fetchrow($result);
                        $db->sql_freeresult($result);

                        if ($confirm_row)
                        {
                                if (strcasecmp($confirm_row['code'], $confirm_code) === 0)
                                {
                                        $sql = 'DELETE FROM ' . CONFIRM_TABLE . "
                                                WHERE confirm_id = '" . $db->sql_escape($confirm_id) . "'
                                                        AND session_id = '" . $db->sql_escape($user->session_id) . "'
                                                        AND confirm_type = " . CONFIRM_LOGIN;
                                        $db->sql_query($sql);
                                }
                                else
                                {
                                        return array(
                                                'status'                => LOGIN_ERROR_ATTEMPTS,
                                                'error_msg'             => 'CONFIRM_CODE_WRONG',
                                                'user_row'              => $row,
                                        );
                                }
                        }
                        else
                        {
                                return array(
                                        'status'                => LOGIN_ERROR_ATTEMPTS,
                                        'error_msg'             => 'CONFIRM_CODE_WRONG',
                                        'user_row'              => $row,
                                );
                        }
                }
        }

        // If the password convert flag is set we need to convert it
        if ($row['user_pass_convert'])
        {
                $password = isset($_REQUEST['password']) ? (string) $_REQUEST['password'] : '';
                // cp1252 is phpBB2's default encoding, characters outside ASCII range might work when converted into that encoding
                if (md5(md5($row['user_passwd_salt']).md5($password)) == $row['user_password'])
                {
                        $hash = phpbb_hash($password);
                        // Update the password in the users table to the new format and remove user_pass_convert flag
                        $sql = 'UPDATE ' . USERS_TABLE . '
                                SET user_password = \'' . $db->sql_escape($hash) . '\',
                                user_pass_convert = 0
                                WHERE user_id = ' . $row['user_id'];
                        $db->sql_query($sql);

                        $row['user_pass_convert'] = 0;
                        $row['user_password'] = $hash;
                }
                else
                {
                        // Although we weren't able to convert this password we have to
                        // increase login attempt count to make sure this cannot be exploited
                        $sql = 'UPDATE ' . USERS_TABLE . '
                                SET user_login_attempts = user_login_attempts + 1
                                WHERE user_id = ' . $row['user_id'];
                        $db->sql_query($sql);
                        return array(
                                'status'                => LOGIN_ERROR_PASSWORD_CONVERT,
                                'error_msg'             => 'LOGIN_ERROR_PASSWORD_CONVERT',
                                'user_row'              => $row,
                        );
                }
        }

        // Check password ...
        if (!$row['user_pass_convert'] && phpbb_check_hash($password, $row['user_password']))
        {
                // Check for old password hash...
                if (strlen($row['user_password']) == 32)
                {
                        $hash = phpbb_hash($password);

                        // Update the password in the users table to the new format
                        $sql = 'UPDATE ' . USERS_TABLE . "
                                SET user_password = '" . $db->sql_escape($hash) . "',
                                        user_pass_convert = 0
                                        WHERE user_id = {$row['user_id']}";
                        $db->sql_query($sql);
                        $row['user_password'] = $hash;
                }

                if ($row['user_login_attempts'] != 0)
                {
                        // Successful, reset login attempts (the user passed all stages)
                        $sql = 'UPDATE ' . USERS_TABLE . '
                                SET user_login_attempts = 0
                                WHERE user_id = ' . $row['user_id'];
                        $db->sql_query($sql);
                }

                // User inactive...
                if ($row['user_type'] == USER_INACTIVE || $row['user_type'] == USER_IGNORE)
                {
                        return array(
                                'status'                => LOGIN_ERROR_ACTIVE,
                                'error_msg'             => 'ACTIVE_ERROR',
                                'user_row'              => $row,
                        );
                }

                // Successful login... set user_login_attempts to zero...
                return array(
                        'status'                => LOGIN_SUCCESS,
                        'error_msg'             => false,
                        'user_row'              => $row,
                );
        }

        // Password incorrect - increase login attempts
        $sql = 'UPDATE ' . USERS_TABLE . '
                SET user_login_attempts = user_login_attempts + 1
                WHERE user_id = ' . $row['user_id'];
        $db->sql_query($sql);

        // Give status about wrong password...
        return array(
                'status'                => LOGIN_ERROR_PASSWORD,
                'error_msg'             => 'LOGIN_ERROR_PASSWORD',
                'user_row'              => $row,
        );
}

?>


Обновил конфиг для метода аутификации IPB

Код: выделить все
UPDATE `forum`.`phpbb3_config` SET `config_value` = 'ipb' WHERE `phpbb3_config`.`config_name` = CAST( 0x617574685f6d6574686f64 AS BINARY ) ;


Очистил кэш форума /forum/cache удалив все что в нём есть.

Вход на форум заработал.
Создал нового пользователя для проверки аутификации = работает.

Всем спасибо.
Dangerous

 


Вернуться в Интеграция и конвертирование

 


  • Похожие темы
    Ответов
    Просмотров
    Последнее сообщение

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Форум поддержки phpBB
2008 - 2017 © BB3x.ru - русская поддержка форума phpBB3
Создано на основе phpBB® Forum Software © phpBB Group
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама