Регистрация на сайте с одновременной регистрацией на форуме

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Odina
phpBB 1.2.0
Сообщения: 10
Стаж: 18 лет 5 месяцев
Откуда: Санк-Петербург

Регистрация на сайте с одновременной регистрацией на форуме

Сообщение Odina »

Мне необходимо сделать так, чтобы при регистрации на сайте происходила регистрация на форуме.

Насколько я поняла, мне необходимо добавить данные в таблицу users. При этом необходимо внести данные в следующие поля:

group_id - 2
user_ip - IP при регистрации
user_regdate - текущий UNIX timestamp
username - Логин
username_clean - Логин
user_password - зашифрованный пароль
user_passchg - текущий UNIX timestamp
user_email - e-mail
user_email_hash - ???
user_lastmark - текущий UNIX timestamp
user_lang - ru
user_style - 1
user_form_salt - ???

Остальные поля можно оставить со значениями по-умолчанию.

Кто-нибудь знает формулу шифровки пароля, для чего используются поля user_email_hash и user_form_salt и что необходимо в них забить?

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

Сообщение FladeX »

Советую заглянуть в раздел FAQ
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Всеслав Чародей
phpBB 1.0.0
Сообщения: 8
Стаж: 18 лет 5 месяцев

Сообщение Всеслав Чародей »

А не проще ли переписать движок чтобы он брал данные пользователей из таблиц форума?
Аватара пользователя
Odina
phpBB 1.2.0
Сообщения: 10
Стаж: 18 лет 5 месяцев
Откуда: Санк-Петербург

Сообщение Odina »

Мне необходимо чтобы регистрация происходила на сайте, а в таблицу форума забивались данные. Незарегистрированные на сайте пользователи не видят форум.

Движок сайта на стадии написания и именно такие условия поставлены заказчиком.

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

Сообщение FladeX »

Odina
http://scarydolls.ru/ - интеграция двойки
http://ageof.ru/ - интеграция тройки (еще не до конца сделал, но регистрация + авторизация совместная).
Поэтому если с движком не определились, советую выбрать Slaed cms (примеры выше), e107 (есть плагин интеграции, я его переводил на русский язык). Также если не ошибаюсь Joomla поддерживает олимпус.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
Odina
phpBB 1.2.0
Сообщения: 10
Стаж: 18 лет 5 месяцев
Откуда: Санк-Петербург

Сообщение Odina »

Движок сайта самописный. Мне не нужно готовое решение, мне нужна информация.

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

Сообщение FladeX »

Odina
посмотрите тему про совместный логин, возможно наведет на мысли...
ссылка
Или в моей теме про интеграцию с Slaed посмотреть как сделана регистрация совместная.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
Odina
phpBB 1.2.0
Сообщения: 10
Стаж: 18 лет 5 месяцев
Откуда: Санк-Петербург

Сообщение Odina »

Спасибо, я посмотрю.

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

Сообщение FladeX »

common.php + includes/constans.php, includes/function_*.php
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
Odina
phpBB 1.2.0
Сообщения: 10
Стаж: 18 лет 5 месяцев
Откуда: Санк-Петербург

Сообщение Odina »

FladeX,

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

//кусок кода из phpbb3, который отвечает за генерирование ключей сессий и паролей
function unique_id()
{
        $val = $config['rand_seed'] . microtime();
        $val = md5($val);
        $config['rand_seed'] = md5($config['rand_seed'] . $val . $extra);
        return substr($val, 4, 16);
}
Каким образом функция видит массив config?
Если толкнуть кувшин, из него плеснет тем, чем он наполнен...
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Сообщение FladeX »

Odina

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

if ($forum == "phpbb3"){
	include_once("forum/config.php");
	$result = $db->sql_query("SELECT * FROM ".$table_prefix."config");
	while ($row = $db->sql_fetchrow($result)) {
		$board_config[$row['config_name']] = $row['config_value'];
	}
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
Odina
phpBB 1.2.0
Сообщения: 10
Стаж: 18 лет 5 месяцев
Откуда: Санк-Петербург

Сообщение Odina »

Да, но функция увидит этот массив, только если его в функции объявить глобальным. Разве не так?

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

//кусок кода из phpbb3, который отвечает за генерирование ключей сессий и паролей 
function unique_id() 
{ 
        global $config;        
        $val = $config['rand_seed'] . microtime(); 
        $val = md5($val); 
        $config['rand_seed'] = md5($config['rand_seed'] . $val . $extra); 
        return substr($val, 4, 16); 
}
Добавлено спустя 5 минут 7 секунд:
FladeX писал(а):Odina

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

if ($forum == "phpbb3"){
	include_once("forum/config.php");
	$result = $db->sql_query("SELECT * FROM ".$table_prefix."config");
	while ($row = $db->sql_fetchrow($result)) {
		$board_config[$row['config_name']] = $row['config_value'];
	}
Да и здесь забивается массив board_config, а функция использует массив config. Массив config забивается в скрипте common.php
Если толкнуть кувшин, из него плеснет тем, чем он наполнен...
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Сообщение FladeX »

Odina
это лишнее имхо. Тот вариант что я выложил - рабочий. Проверялось мною и еще несколькими юзерами, все в порядке, все работает.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
Odina
phpBB 1.2.0
Сообщения: 10
Стаж: 18 лет 5 месяцев
Откуда: Санк-Петербург

Сообщение Odina »

Это ошибка, но не критичная.

А работает потому что функция md5 все равно генерирует код, ей по барабану, что ей передают.

Добавлено спустя 17 минут 30 секунд:

А вот это уже критичная ошибка:

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

function new_user($user_name, $user_password, $user_email) {
		global $db, $table_prefix, $board_config, $user_def_group;
		$user_name_clean = strtolower(str_replace('|', '|', $user_name));
		if(strlen($user_password) != 34){
			$phpbb_password = phpbb_hash($user_password);
		} else {
			$phpbb_password = $user_password;
		}
		$email_hash = crc32(strtolower($user_email)).strlen($user_email);
		$form_salt = unique_id();
		$user_ip = getenv("REMOTE_ADDR");
		$num_users_new = $board_config['num_users'] + 1;
		list($last_id) = $db->sql_fetchrow($db->sql_query("SELECT user_id FROM ".$table_prefix."users ORDER BY user_id DESC LIMIT 1"));
		$reg_id = $last_id + 1;
		$db->sql_query("INSERT INTO ".$table_prefix."users (user_id, group_id, user_ip, user_regdate, username, username_clean, user_password, user_passchg, user_email, user_email_hash, user_lang, user_dateformat, user_form_salt) VALUES ('".$reg_id."', '".$user_def_group."', '".$user_ip."', '".time()."', '".$user_name."', '".$user_name_clean."', '".$phpbb_password."', '".time()."', '".$user_email."', '".$email_hash."', '".$board_config['default_lang']."', '".$board_config['default_dateformat']."', '".$form_salt."')");
		$db->sql_query("INSERT INTO ".$table_prefix."user_group (group_id, user_id, group_leader, user_pending) VALUES ('2', '".$reg_id."', '0', '0')");

		$db->sql_query("UPDATE ".$table_prefix."config SET config_value = '".$reg_id."' WHERE config_name = 'newest_user_id'");
		$db->sql_query("UPDATE ".$table_prefix."config SET config_value = '".$user_name."' WHERE config_name = 'newest_username'");
		$db->sql_query("UPDATE ".$table_prefix."config SET config_value = '".$num_users_new."' WHERE config_name = 'num_users'");
	}
Что произойдет, если функция getenv("REMOTE_ADDR") вернет false?

Произойдет сбой в записи, функция sql_query вернет false, а скрипт побежит дальше, не отработав эту ошибку...

Добавлено спустя 10 минут 57 секунд:

Вот в этот запрос вместо 2 должно забиваться значение $user_def_group

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

$db->sql_query("INSERT INTO ".$table_prefix."user_group (group_id, user_id, group_leader, user_pending) VALUES ('2', '".$reg_id."', '0', '0')");
Это не критично, пока у Вас группа пользователей имеет group_id = 2. Если group_id будет другой, то произойдет сбой.
Если толкнуть кувшин, из него плеснет тем, чем он наполнен...
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Сообщение rxu »

Odina
Не занимайтесь самодеятельностью, тем более, что в phpBB3 хэш собственный, а не чистый md5.
includes/functions_user.php
function user_add

И вообще, перенесено в форум для авторов.
Изображение

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