Как добавить пользователей напрямую

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!
С 1 января 2017 года phpBB Group прекращает поддержку phpBB версии 3.0.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.0 до 1 июля 2017 года.
Подробнее: Окончание поддержки phpBB 3.0.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
parakimax
phpBB 1.0.0
Сообщения: 5
Стаж: 13 лет 7 месяцев
Благодарил (а): 3 раза

Как добавить пользователей напрямую

Сообщение parakimax »

Список пользователей с паролями уже есть и пользователей в списке много.
Как можно добавить этих пользователей на форум в группу "Зарегистрированные пользователи".

Посмотрел напрямую в таблицу *_users - но, во-первых, в ней много полей неизвестного назначения и, во-вторых, пароль - зашифрован.

Цель - чтобы зарегистрированным пользователям моего сайта не пришлось регистрироваться - чтобы они уже были в списках форума и могли войти под своими паролями.
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 16 лет 10 месяцев
Благодарил (а): 42 раза
Поблагодарили: 506 раз

Re: Как добавить пользователей напрямую

Сообщение Pazh »

мод ACP Add User MOD локализация есть на этом форуме. Добавляет по одному в админке

или

самостоятельно программно (писать свой скрипт) используя /includes/functions_user.php функцию user_add()

Добавлено спустя 3 минуты 7 секунд:
или установить Support Toolkit - там уже есть функционал добавления нового юзера
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
МайскийЖук
phpBB 3.0.7-PL1
Сообщения: 2535
Стаж: 16 лет 11 месяцев
Благодарил (а): 17 раз
Поблагодарили: 366 раз

Как добавить пользователей напрямую

Сообщение МайскийЖук »

1. Создаем CSV-файл следующего содержания:

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

    "Пользователь 1","пароль1","пользователь1@домен1.ru",2,"ru",0
    "Пользователь 2","пароль2","пользователь2@домен2.ru",2,"ru",0
    "Пользователь 3","пароль3","пользователь3@домен3.ru",2,"ru",0
Здесь необходимые для регистрации поля идут в следующем порядке: имя пользователя → пароль → адрес электронной почты → ID группы → язык → тип.

Называем этот файл users_to_add.csv и закачиваем его в корневую директорию форума. Можно назвать файл иначе, но тогда соответствующее имя нужно будет прописать в PHP-файле, который идет ниже.

2. Создаем PHP-файл следующего содержания:

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

    <?php
    /**
    * @ignore
    */

    @set_time_limit(0);
    //@ignore_user_abort(true);
    @ini_set('memory_limit', '64M');

    define('IN_PHPBB', true);
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include($phpbb_root_path . 'common.' . $phpEx);
    include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);

    // Start session management
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();

    $users_start = request_var('us', 0);
    $users_step = request_var('up', 50);

    $users_data = array();

    $users_counter = 0;
    $handle = fopen('users_to_add.csv', 'r');
    while (($data = fgetcsv($handle, 0, ',')) !== false)
    {
       $num = count($data);
       for ($c = 0; $c < $num; $c++)
       {
          $users_data[$users_counter][$c] = $data[$c];
       }
       $users_counter++;
    }
    fclose($handle);

    //include($phpbb_root_path . 'users_to_add.' . $phpEx);

    $users_list = '';
    $total_users = count($users_data);
    $users_this_step = min($users_start + $users_step, $total_users);
    $users_this_step = ($users_this_step == 0) ? $total_users : $users_this_step;
    $new_start = $users_start;

    $users_fields_name = array('username', 'user_password', 'user_email', 'group_id', 'user_lang', 'user_type', 'user_regdate');
    for ($i = $users_start; $i < $users_this_step; $i++)
    {
       $users_fields_values = array($users_data[$i][0], phpbb_hash($users_data[$i][1]), $users_data[$i][2], '2', 'en', '0', time());
       for ($j = 0; $j < count($users_fields_name); $j++)
       {
          $users_data[$i][$j] = (empty($users_data[$i][$j])) ? $users_fields_values[$j] : $users_data[$i][$j];
          $users_data[$i][$users_fields_name[$j]] = $users_fields_values[$j];
          unset($users_data[$i][$j]);
       }
       $user_id = user_add($users_data[$i]);
       if ($user_id !== false)
       {
          $users_list .= (($users_list == '') ? '' : ', ') . $users_data[$i]['username'];
       }
       $new_start++;
    }

    $message_text = 'Следующие пользователи были добавлены в базу данных:<br /><br />' . $users_list;

    if ($new_start >= $total_users)
    {
       $message = 'Все указанные пользователи были успешно добавлены!<br /><br />' . $message_text;
       $template->assign_vars(array(
          'MESSAGE_TITLE' => 'Добавление пользователей',
          'MESSAGE_TEXT' => $message
          )
       );
       page_header('Добавление пользователей');
       $template->set_filenames(array('body' => 'message_body.html'));
       page_footer();
    }
    else
    {
       $meta_url = append_sid("{$phpbb_root_path}users_add.$phpEx", "us=$new_start&up=$users_step");
       meta_refresh(3, $meta_url);
       $message = 'Процесс добавления пользователей еще не закончен. Данная страница автоматически обновится через несколько секунд. Пожалуйста, подождите…<br /><br />' . $message_text;
       trigger_error($message);
       exit;
    }

    ?>
Называем этот файл users_add.php и закачиваем в корневую директорию форума.

3. Направляем браузер на файл users_add.php. Добавление пользователей будет происходить по 50 человек за один проход. Количество добавляемых пользователей можно увеличить, исправив соответствующее число в строке $users_step = request_var('up', 50);.

Внимание! Никакой гарантии работоспособности данного скрипта не дается. За идею скрипта скажите спасибо вот этому чуваку.
Любовь и боль, покой и бой я как любой несу с собой…
parakimax
phpBB 1.0.0
Сообщения: 5
Стаж: 13 лет 7 месяцев
Благодарил (а): 3 раза

Re: Как добавить пользователей напрямую

Сообщение parakimax »

Ого... Сурово. Спасибо большое!
Booker
phpBB 2.0.7a
Сообщения: 627
Стаж: 15 лет 3 месяца
Благодарил (а): 165 раз
Поблагодарили: 21 раз

Re: Как добавить пользователей напрямую

Сообщение Booker »

МайскийЖук писал(а): Здесь необходимые для регистрации поля идут в следующем порядке: имя пользователя → пароль → адрес электронной почты → ID группы → язык → тип.
Даты регистрации вроде не хватает? Или она ставится временем прохода?
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: Как добавить пользователей напрямую

Сообщение Пчелкин »

Да...она появится сама в автомате...
МайскийЖук испробовал... офигел.... В миллион раз быстрей чем добавлять ручками или через СТК...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
МайскийЖук
phpBB 3.0.7-PL1
Сообщения: 2535
Стаж: 16 лет 11 месяцев
Благодарил (а): 17 раз
Поблагодарили: 366 раз

Как добавить пользователей напрямую

Сообщение МайскийЖук »

Значит пора добавлять инструкцию в «Базу знаний» в FAQ. :)
Любовь и боль, покой и бой я как любой несу с собой…

Вернуться в «Поддержка phpBB 3.0.х»