ошибка "На этом сайте нет форумов." я так понял связана с привилегиями, а они с полем user_permissions?
люди подскажите или киньте ссылку, кто сталкивался, как добавлять корректно пользователей напрямую в бд, шоб усе работало!!!
plzzzzzz
Регистрация.Добавление пользователей прямо в БД
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
-
aragnom
- phpBB 1.2.1
- Сообщения: 21
- Стаж: 16 лет 11 месяцев
-
nissin
- phpBB 3.0.4
- Сообщения: 2229
- Стаж: 18 лет 9 месяцев
- Откуда: Астана
- Благодарил (а): 7 раз
- Поблагодарили: 344 раза
Re: Регистрация.Добавление пользователей прямо в БД
Права на форумы для группы зарегистрированных пользователей правильно установлены?
Вот исходный код функции для добавления пользователей:
Вот исходный код функции для добавления пользователей:
Код: Выделить всё
/**
* Adds an user
*
* @param mixed $user_row An array containing the following keys (and the appropriate values): username, group_id (the group to place the user in), user_email and the user_type(usually 0). Additional entries not overridden by defaults will be forwarded.
* @param string $cp_data custom profile fields, see custom_profile::build_insert_sql_array
* @return the new user's ID.
*/
function user_add($user_row, $cp_data = false)
{
global $db, $user, $auth, $config, $phpbb_root_path, $phpEx;
if (empty($user_row['username']) || !isset($user_row['group_id']) || !isset($user_row['user_email']) || !isset($user_row['user_type']))
{
return false;
}
$username_clean = utf8_clean_string($user_row['username']);
if (empty($username_clean))
{
return false;
}
$sql_ary = array(
'username' => $user_row['username'],
'username_clean' => $username_clean,
'user_password' => (isset($user_row['user_password'])) ? $user_row['user_password'] : '',
'user_pass_convert' => 0,
'user_email' => strtolower($user_row['user_email']),
'user_email_hash' => crc32(strtolower($user_row['user_email'])) . strlen($user_row['user_email']),
'group_id' => $user_row['group_id'],
'user_type' => $user_row['user_type'],
);
// These are the additional vars able to be specified
$additional_vars = array(
'user_permissions' => '',
'user_timezone' => $config['board_timezone'],
'user_dateformat' => $config['default_dateformat'],
'user_lang' => $config['default_lang'],
'user_style' => (int) $config['default_style'],
'user_actkey' => '',
'user_ip' => '',
'user_regdate' => time(),
'user_passchg' => time(),
'user_options' => 895,
'user_inactive_reason' => 0,
'user_inactive_time' => 0,
'user_lastmark' => time(),
'user_lastvisit' => 0,
'user_lastpost_time' => 0,
'user_lastpage' => '',
'user_posts' => 0,
'user_dst' => (int) $config['board_dst'],
'user_colour' => '',
'user_occ' => '',
'user_interests' => '',
'user_avatar' => '',
'user_avatar_type' => 0,
'user_avatar_width' => 0,
'user_avatar_height' => 0,
'user_new_privmsg' => 0,
'user_unread_privmsg' => 0,
'user_last_privmsg' => 0,
'user_message_rules' => 0,
'user_full_folder' => PRIVMSGS_NO_BOX,
'user_emailtime' => 0,
'user_notify' => 0,
'user_notify_pm' => 1,
'user_notify_type' => NOTIFY_EMAIL,
'user_allow_pm' => 1,
'user_allow_viewonline' => 1,
'user_allow_viewemail' => 1,
'user_allow_massemail' => 1,
'user_sig' => '',
'user_sig_bbcode_uid' => '',
'user_sig_bbcode_bitfield' => '',
'user_form_salt' => unique_id(),
);
// Now fill the sql array with not required variables
foreach ($additional_vars as $key => $default_value)
{
$sql_ary[$key] = (isset($user_row[$key])) ? $user_row[$key] : $default_value;
}
// Any additional variables in $user_row not covered above?
$remaining_vars = array_diff(array_keys($user_row), array_keys($sql_ary));
// Now fill our sql array with the remaining vars
if (sizeof($remaining_vars))
{
foreach ($remaining_vars as $key)
{
$sql_ary[$key] = $user_row[$key];
}
}
$sql = 'INSERT INTO ' . USERS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
$db->sql_query($sql);
$user_id = $db->sql_nextid();
// Insert Custom Profile Fields
if ($cp_data !== false && sizeof($cp_data))
{
$cp_data['user_id'] = (int) $user_id;
if (!class_exists('custom_profile'))
{
include_once($phpbb_root_path . 'includes/functions_profile_fields.' . $phpEx);
}
$sql = 'INSERT INTO ' . PROFILE_FIELDS_DATA_TABLE . ' ' .
$db->sql_build_array('INSERT', custom_profile::build_insert_sql_array($cp_data));
$db->sql_query($sql);
}
// Place into appropriate group...
$sql = 'INSERT INTO ' . USER_GROUP_TABLE . ' ' . $db->sql_build_array('INSERT', array(
'user_id' => (int) $user_id,
'group_id' => (int) $user_row['group_id'],
'user_pending' => 0)
);
$db->sql_query($sql);
// Now make it the users default group...
group_set_user_default($user_row['group_id'], array($user_id), false);
// set the newest user and adjust the user count if the user is a normal user and no activation mail is sent
if ($user_row['user_type'] == USER_NORMAL)
{
set_config('newest_user_id', $user_id, true);
set_config('newest_username', $user_row['username'], true);
set_config('num_users', $config['num_users'] + 1, true);
$sql = 'SELECT group_colour
FROM ' . GROUPS_TABLE . '
WHERE group_id = ' . (int) $user_row['group_id'];
$result = $db->sql_query_limit($sql, 1);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
set_config('newest_user_colour', $row['group_colour'], true);
}
return $user_id;
}
-
aragnom
- phpBB 1.2.1
- Сообщения: 21
- Стаж: 16 лет 11 месяцев
Re: Регистрация.Добавление пользователей прямо в БД
Подскажи пожалуйста, если не затруднит, где их можно установить в бд?т.к. для 900 пользователей их вручную менять будет затруднительно))nissin писал(а):Права на форумы для группы зарегистрированных пользователей правильно установлены?
и еще не понимаю за что отвечает поле user_permissions... вроде как раз за права доступа?
-
nissin
- phpBB 3.0.4
- Сообщения: 2229
- Стаж: 18 лет 9 месяцев
- Откуда: Астана
- Благодарил (а): 7 раз
- Поблагодарили: 344 раза
Re: Регистрация.Добавление пользователей прямо в БД
Права на форумы устанавливаются для группы в админке.
-
aragnom
- phpBB 1.2.1
- Сообщения: 21
- Стаж: 16 лет 11 месяцев
Re: Регистрация.Добавление пользователей прямо в БД
group_id у моих юзверей = 3 а в админке они вообще не отображаются, будто и не добавлял несколько сот пользователей.
м.б. я чет туплю??
м.б. я чет туплю??
-
nissin
- phpBB 3.0.4
- Сообщения: 2229
- Стаж: 18 лет 9 месяцев
- Откуда: Астана
- Благодарил (а): 7 раз
- Поблагодарили: 344 раза
Re: Регистрация.Добавление пользователей прямо в БД
Исходник функции я Вам дал.Ильф и Петров писал(а):Пилите, Шура, пилите...
Добавьте юзера стандартным образом и проверяйте, в чём у Вас разница.
-
Rayden
- Former team member
- Сообщения: 3739
- Стаж: 21 год 2 месяца
- Поблагодарили: 44 раза
Re: Регистрация.Добавление пользователей прямо в БД
Надо бы тему в раздел для авторов.
К поддержке это никаким боком.
К поддержке это никаким боком.
-
aragnom
- phpBB 1.2.1
- Сообщения: 21
- Стаж: 16 лет 11 месяцев
Re: Регистрация.Добавление пользователей прямо в БД
Вообщем кому будет интересна тема, "как добавить пользователя на прямую в бд(в пхпбб3.0)", вот хорошая статья в жж - http://andrvm.livejournal.com/3855.html
от себя могу добавить:
при добавлении напрямую, необходимо вносить данные в 2 таблицы - phpbb_users и phpbb_user_group, по умолчанию значения поля group_id хранятся в phpbb_groups, права доступа настраиваются в таблицах *_acl_*. Такое поле как username_clean заполняется обработкой специально функцией а не обрезанием пробелов и привидением в нижний регистр. что б ее включить в свой проект надо инклудить модуль includes/utf/utf_tools.php, причем его желательно скопировать в свой проект т.к. его придется отредактировать. в нем удаляем все не являющееся функциями, а также надо скопировать еще несколько файлов связанных с utf_tools.php - utf_normalizer.php, data/case_fold_c.php, data/case_fold_f.php, data/case_fold_s.php, data/confusables.php (соответственно необходимо отредактировать пути к файлам в инклудах). две глобальные переменные их значения: 1 - путь от файла запуска функции до текущего, 2 - "php". их описываем в своем файле.
поле user_email_hash получаем путем
user_regdate, user_passchg, user_lastmark получаем функцией
как получить хеш user_password и user_form_salt подробно описано в статье из жж
огромное всем спасибо за помощь, еспешиали nissin)))
от себя могу добавить:
при добавлении напрямую, необходимо вносить данные в 2 таблицы - phpbb_users и phpbb_user_group, по умолчанию значения поля group_id хранятся в phpbb_groups, права доступа настраиваются в таблицах *_acl_*. Такое поле как username_clean заполняется обработкой специально функцией
Код: Выделить всё
utf8_clean_stringКод: Выделить всё
global $phpbb_root_path, $phpEx;поле user_email_hash получаем путем
Код: Выделить всё
crc32(strtolower($user_row['user_email'])) . strlen($user_row['user_email'])Код: Выделить всё
time()огромное всем спасибо за помощь, еспешиали nissin)))

