Пропустить

Регистрация.Добавление пользователей прямо в БД

Форум для авторов модов для phpBB 3.0.x. Здесь можно попросить помощи в разработке у коллег.
Свернуть Развернуть Правила форума Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).

Re: Регистрация.Добавление пользователей прямо в БД

Сообщение aragnom » 13.11.2009 11:46

ошибка "На этом сайте нет форумов." я так понял связана с привилегиями, а они с полем user_permissions?

люди подскажите или киньте ссылку, кто сталкивался, как добавлять корректно пользователей напрямую в бд, шоб усе работало!!!
plzzzzzz

aragnom
phpBB 1.2.1
 
Сообщения: 21
Зарегистрирован: 13.10.2009 14:45
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Регистрация.Добавление пользователей прямо в БД

Сообщение nissin » 13.11.2009 14:12

Права на форумы для группы зарегистрированных пользователей правильно установлены?
Вот исходный код функции для добавления пользователей:
/**
* 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;
}
Всё повторяется. nurlan.info
Аватара пользователя
nissin
Поддержка
Поддержка
 
Сообщения: 1381
Зарегистрирован: 16.12.2007 15:01
Откуда: Павлодар
Благодарил (а): 1 раз.
Поблагодарили: 124 раз.

Re: Регистрация.Добавление пользователей прямо в БД

Сообщение aragnom » 13.11.2009 14:38

nissin писал(а):Права на форумы для группы зарегистрированных пользователей правильно установлены?

Подскажи пожалуйста, если не затруднит, где их можно установить в бд?т.к. для 900 пользователей их вручную менять будет затруднительно))
и еще не понимаю за что отвечает поле user_permissions... вроде как раз за права доступа?

aragnom
phpBB 1.2.1
 
Сообщения: 21
Зарегистрирован: 13.10.2009 14:45
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Регистрация.Добавление пользователей прямо в БД

Сообщение nissin » 13.11.2009 15:50

Права на форумы устанавливаются для группы в админке.
Всё повторяется. nurlan.info
Аватара пользователя
nissin
Поддержка
Поддержка
 
Сообщения: 1381
Зарегистрирован: 16.12.2007 15:01
Откуда: Павлодар
Благодарил (а): 1 раз.
Поблагодарили: 124 раз.

Re: Регистрация.Добавление пользователей прямо в БД

Сообщение aragnom » 16.11.2009 8:24

group_id у моих юзверей = 3 а в админке они вообще не отображаются, будто и не добавлял несколько сот пользователей.
м.б. я чет туплю??

aragnom
phpBB 1.2.1
 
Сообщения: 21
Зарегистрирован: 13.10.2009 14:45
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Регистрация.Добавление пользователей прямо в БД

Сообщение nissin » 16.11.2009 10:30

Ильф и Петров писал(а):Пилите, Шура, пилите...

Исходник функции я Вам дал.
Добавьте юзера стандартным образом и проверяйте, в чём у Вас разница.
Всё повторяется. nurlan.info
Аватара пользователя
nissin
Поддержка
Поддержка
 
Сообщения: 1381
Зарегистрирован: 16.12.2007 15:01
Откуда: Павлодар
Благодарил (а): 1 раз.
Поблагодарили: 124 раз.

Re: Регистрация.Добавление пользователей прямо в БД

Сообщение Rayden » 16.11.2009 14:17

Надо бы тему в раздел для авторов.
К поддержке это никаким боком.
phpBB2 FAQ
phpBB3 FAQ
Аватара пользователя
Rayden
Former team member
 
Сообщения: 3795
Зарегистрирован: 27.06.2005 1:07
Благодарил (а): 0 раз.
Поблагодарили: 29 раз.

Re: Регистрация.Добавление пользователей прямо в БД

Сообщение aragnom » 17.11.2009 8:55

Вообщем кому будет интересна тема, "как добавить пользователя на прямую в бд(в пхпбб3.0)", вот хорошая статья в жж - http://andrvm.livejournal.com/3855.html
от себя могу добавить:
при добавлении напрямую, необходимо вносить данные в 2 таблицы - phpbb_users и phpbb_user_group, по умолчанию значения поля group_id хранятся в phpbb_groups, права доступа настраиваются в таблицах *_acl_*. Такое поле как username_clean заполняется обработкой специально функцией
utf8_clean_string
а не обрезанием пробелов и привидением в нижний регистр. что б ее включить в свой проект надо инклудить модуль 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 (соответственно необходимо отредактировать пути к файлам в инклудах). две глобальные переменные
global $phpbb_root_path, $phpEx;
их значения: 1 - путь от файла запуска функции до текущего, 2 - "php". их описываем в своем файле.
поле user_email_hash получаем путем
crc32(strtolower($user_row['user_email'])) . strlen($user_row['user_email'])

user_regdate, user_passchg, user_lastmark получаем функцией
как получить хеш user_password и user_form_salt подробно описано в статье из жж

огромное всем спасибо за помощь, еспешиали nissin)))

aragnom
phpBB 1.2.1
 
Сообщения: 21
Зарегистрирован: 13.10.2009 14:45
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Пред.

Вернуться в Для авторов (phpBB 3.0.x)

 

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

Кто сейчас на конференции

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

Бессрочный конкурс phpBB-ориентированных материалов
FastVPS — надёжный и доступный хостинг для phpBB
Место для вашей рекламы