Дублирование аккаунтов

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Дублирование аккаунтов

Сообщение FladeX »

Имеется связка cms + olympus. В cms есть интеграция с форумом, при этом cms использует форумскую таблицу юзеров, не занося никаких изменений в свою таблицу. Регистрация пользователей идет через форум в обычном режиме. Требуется сделать дублирование аккаунтов при регистрации, чтобы помимо занесения в таблицу _users форума, они еще заносились в нужную таблицу cms.

Обе таблицы находятся в одной базе данных.

Принцип я думаю прост - нужно добавить еще один sql-запрос на INSERT (верно ведь?). Но куда его добавлять - я не знаю. Желательно тыкните носом в нужный файл и нужную строку.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
Master of Tragedy
phpBB 1.4.2
Сообщения: 68
Стаж: 19 лет 1 месяц
Откуда: Санкт-Петербург

Re: Дублирование аккаунтов

Сообщение Master of Tragedy »

Я полагаю, что в ucp_register можно дописать код, взяв за образец тот, что используется форумом и модифицировать его для работы с БД cms. Я посмотрел. Там в принципе все просто.
Ce grand malheur de ne pouvoir etre seul...
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Re: Дублирование аккаунтов

Сообщение FladeX »

Там insert только в одной строке, и это явно не таблица _users.

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

				$sql = \'INSERT INTO \' . CONFIRM_TABLE . \' \' . $db->sql_build_array(\'INSERT\', array(
					\'confirm_id\'	=> (string) $confirm_id,
					\'session_id\'	=> (string) $user->session_id,
					\'confirm_type\'	=> (int) CONFIRM_REG,
					\'code\'			=> (string) $code,
					\'seed\'			=> (int) $seed)
				);
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 20 лет 4 месяца
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

Re: Дублирование аккаунтов

Сообщение Палыч »

FladeX
function user_add файл functions_user.php
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Re: Дублирование аккаунтов

Сообщение FladeX »

Строки 241-244?

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

	$sql = \'INSERT INTO \' . USERS_TABLE . \' \' . $db->sql_build_array(\'INSERT\', $sql_ary);
	$db->sql_query($sql);

	$user_id = $db->sql_nextid();
Сразу после этого вставить аналогичный участок, но только уже для другой таблицы, верно?
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 20 лет 4 месяца
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

Re: Дублирование аккаунтов

Сообщение Палыч »

FladeX
Ну если только дублирование, то в принципе, да
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Re: Дублирование аккаунтов

Сообщение FladeX »

Эээ, я что-то еще упустил? Дело в хэшировании паролей, практически все cms используют md5, а у олимпуса нечто оригинальное, поэтому я из-за соображений практичности решил предусмотреть плохие варианты, и иметь под рукой таблицу с паролями в md5. На всякий пожарный) А уж что для этого еще нужно - трудно сказать, я думал что дублирования вполне хватит.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
RedNaxi
Former team member
Сообщения: 933
Стаж: 19 лет 7 месяцев
Откуда: BeBoss.ru
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Re: Дублирование аккаунтов

Сообщение RedNaxi »

очевидно что для этого надо заносить себе в таблицу пароль в мд5. ищи в функции, где вычисляется хеш пароля, дописывай дальше свой, и делай инсерт себе.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Re: Дублирование аккаунтов

Сообщение rxu »

Наверное будет проще сделать в includes/ucp/ucp_register.php где скрипт оперирует непосредственно данными из регистрационной формы.
В функцию user_add пароль поступает уже в хэшированном алгоритмом phpBB виде.
Изображение
Аватара пользователя
RedNaxi
Former team member
Сообщения: 933
Стаж: 19 лет 7 месяцев
Откуда: BeBoss.ru
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Re: Дублирование аккаунтов

Сообщение RedNaxi »

опять же, немного не понятно, зачем плодить таблицы пользователей и какой такой всякий случай что может пригодится пароль в мд пять. но если уж и правда может возникнуть такая необходимость, имхо проще добавить поле в таблицу пользователей форума, чем заводить еще одну таблицу.
к тому же, если так сделать то с реализацией все будет проще, чем как сейчас задумано.
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Re: Дублирование аккаунтов

Сообщение FladeX »

rxu, 314-331 строки? Хэширование паролей вижу

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

\'user_password\'			=> phpbb_hash($data[\'new_password\']),
соответственно здесь заменяем на

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

\'user_password\'			=> md5($data[\'new_password\']),
и вместо вызова функции user_add вызываем например cmsuser_add, причем саму функцию описываем в functions_user.php. Так?

RedNaxi, зачем добавлять поле в таблицу форума? Мне нужна именно таблица цмски, причем готовая, так, чтобы при отсоединении форума там все нормально работало. Существующая интеграция использует таблицу форума, а мне это кажется не совсем удачным способом, поэтому хочу со временем переделать на использование двух разных таблиц.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Re: Дублирование аккаунтов

Сообщение rxu »

FladeX
Вариантов конкретной реализации может быть множество, можно и так, как вы сказали. Но: не надо менять, лучше добавить ещё один индекс, например

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

user_password_cms         => md5($data[new_password]),
и в вашей функции "например cmsuser_add" оперировать именно им.
Изображение
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Re: Дублирование аккаунтов

Сообщение FladeX »

Точно, так будет более рационально. Спасибо за оперативную помощь ;)
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Re: Дублирование аккаунтов

Сообщение FladeX »

Трудности возникли.
Итак, пациент - phpBB 3.0.1.
Мои действия:
/includes/ucp/ucp_register.php
После строк (примерно 314-316)

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

				$user_row = array(
					'username'				=> $data['username'],
					'user_password'			=> phpbb_hash($data['new_password']),
добавляю после

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

					'user_cmspass'			=> md5($data['new_password']),
Теперь есть переменная с md5 хэшем пароля пользователя.
Далее... Строки 331-332:

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

				// Register user...
				$user_id = user_add($user_row, $cp_data);
Добавляю после

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

				cmsuser_add($user_row, $user_id);
Получается вызов новой функции.
Теперь файл includes/functions_user.php
Строки 294-298

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

		set_config('newest_user_colour', $row['group_colour'], true);
	}

	return $user_id;
}
Добавляем после:

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

function cmsuser_add($user_row, $user_id)
{
	global $db, $user, $auth, $config, $phpbb_root_path, $phpEx;

	if (empty($user_row['username']) || !isset($user_row['user_email']))
	{
		return false;
	}

	$username_clean = utf8_clean_string($user_row['username']);

	$sql_ary = array(
		'username'			=> $user_row['username'],
		'username_clean'	=> $username_clean,
		'user_cmspass'		=> (isset($user_row['user_cmspass'])) ? $user_row['user_cmspass'] : '',
		'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']),
		'user_regdate'		=> $user_row['user_regdate'],
		'group_id'			=> $user_row['group_id'],
		'user_type'			=> $user_row['user_type'],
	);

	if (sizeof($remaining_vars))
	{
		foreach ($remaining_vars as $key)
		{
			$sql_ary[$key] = $user_row[$key];
		}
	}
	$sql = "INSERT INTO dncms_users (userid, uname, upass, umail, regdate, activate) VALUES ('$user_id', '$username', '$user_cmspass', '$user_email', '$user_regdate', 1)");

	$db->sql_query($sql);
}
То есть описываю новую функцию, которая вставляет в табличку dncms_users запись с данными только что зарегистрированного на форуме юзера. Только хэш пароля другой.

На практике при попытке зарегистрироваться (/forum/ucp.php?mode=register) получаю пустую страницу.
Помогите пожалуйста, что тут неверно?
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Re: Дублирование аккаунтов

Сообщение rxu »

FladeX писал(а):'$user_regdate', 1)");
Это что такое в конце строки :?:

Добавлено спустя 39 секунд:
И, кстати, вам ли мне объяснять - смотрите еррор лог.
Изображение

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