[FAQ] Интеграция входа на конференцию phpBB с сайтом
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x/3.3.x | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x/3.3.x | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение

-
- phpBB Guru
- Сообщения: 16948
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1701 раз
[FAQ] Интеграция входа на конференцию phpBB с сайтом
Ниже приведен пример скрипта с интегрированной формой входа на конференцию (общего вида).
В приведённом примере папка, в которой находится скрипт, находится на один уровень выше папки конференции. Файлы конференции находятся в папке phpBB3 относительно скрипта.
По коду скрипта имеются пояснительные комментарии (на английском языке).
Вопросы принимаются в этой теме.
Версия 1.1.0 с интегрированным списком онлайн и легендой групп здесь.
Версия 1.2.0 с аватарой здесь.
Версия 2.0.1 для phpBB 3.2/3.3 здесь.
В приведённом примере папка, в которой находится скрипт, находится на один уровень выше папки конференции. Файлы конференции находятся в папке phpBB3 относительно скрипта.
По коду скрипта имеются пояснительные комментарии (на английском языке).
Вопросы принимаются в этой теме.
Версия 1.1.0 с интегрированным списком онлайн и легендой групп здесь.
Версия 1.2.0 с аватарой здесь.
Версия 2.0.1 для phpBB 3.2/3.3 здесь.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось rxu 22.05.2020 8:37, всего редактировалось 6 раз.
-
- phpBB 1.0.0
- Сообщения: 3
- Стаж: 14 лет 6 месяцев
Re: Единый вход на сайт и на форум
Да, конечно 
Все сделано с нуля и только ручками.
Благо это уже третий сайт у меня.
Вот только форум ни разу не прикручивал. Делал свои простые...
Спасибо. Значит буду читать внимательнее...
Добавлено спустя 2 часа 44 минуты 38 секунд:
В общем посидел подумал...
Получилось две части кода.
Если делать все в одном файле, то для того чтобы разместить форму в нужном месте придется отключить 'header' не только в 'login.php' но и в 'includes/session.php' строка 1007. Кроме того придется закрывать "родное" соединение с MySQL перед подключением 'login.php' , а затем опять открывать.
Первую включаем до вывода информации, чтобы не ругалось из-за 'header'
А вторую в том месте, где хотим получить вывод формы.
Вот так вроде работает правильно. И мою кодировку не портит.

Все сделано с нуля и только ручками.
Благо это уже третий сайт у меня.
Вот только форум ни разу не прикручивал. Делал свои простые...
Спасибо. Значит буду читать внимательнее...
Добавлено спустя 2 часа 44 минуты 38 секунд:
В общем посидел подумал...
Получилось две части кода.
Если делать все в одном файле, то для того чтобы разместить форму в нужном месте придется отключить 'header' не только в 'login.php' но и в 'includes/session.php' строка 1007. Кроме того придется закрывать "родное" соединение с MySQL перед подключением 'login.php' , а затем опять открывать.
Первую включаем до вывода информации, чтобы не ругалось из-за 'header'
Код: Выделить всё
<?php
//---my code
//Change in according to the actual code
function recoding_for_forum($data_string)
{
$data_string=iconv("cp1251", "UTF-8", $data_string);
return $data_string;
}
function recoding_for_site($data_string)
{
$data_string=iconv("UTF-8", "cp1251", $data_string);
return $data_string;
}
//---end my code
//Start login.php code
define('IN_PHPBB', true);
// Set phpBB root folder properly. Change in according to the actual board folder
define('PHPBB_ROOT_PATH', './forum/');
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('ucp');
// Initialize login result array
$login = array();
// Handle logouot button if pressed
if(isset($_POST['logout']) && $user->data['user_id'] != ANONYMOUS)
{
$user->session_kill();
}
// Check if user has submitted login and password and try to log in
if(isset($_POST['login']) && $user->data['user_id'] == ANONYMOUS)
{
//---my code
$_POST['username']=recoding_for_forum($_POST['username']);
$_POST['password']=recoding_for_forum($_POST['password']);
$username = $_POST['username'];
$password = $_POST['password'];
//---end my code
//$username = request_var('username', '', true);
//$password = request_var('password', '', true);
$autologin = (!empty($_POST['autologin'])) ? true : false;
$login = $auth->login($username, $password, $autologin);
}
// Send headers
//header('Content-type: text/html; charset=UTF-8');
header('Cache-Control: private, no-cache="set-cookie"');
header('Expires: 0');
header('Pragma: no-cache');
//---my code
if (!$user->data['is_registered'])
{
//here you can create or delete you session data
}
if ($user->data['user_id'] != ANONYMOUS)
{
//here you can create or delete you session data
}
//---end my code
?>
Код: Выделить всё
<?php
// Check if user has tried to log in and greet him if login is successful
if((!empty($login) && $login['status'] == LOGIN_SUCCESS) || $user->data['user_id'] != ANONYMOUS)
{
// Reset permissions data if user has just logged in
if(!empty($login))
{
$auth->acl($user->data);
}
echo 'Hello, ' . recoding_for_site(get_username_string('full', $user->data['user_id'], $user->data['username'], $user->data['user_colour']));
echo '<form method="post">';
echo ' <input type="submit" name="logout" value="LOGOUT" />';
echo '</form>';
}
else
{
// Handle login errors if exist and display error message right above the login form
if(isset($login['error_msg']) && $login['error_msg'])
{
$err = $user->lang[$login['error_msg']];
// Assign admin contact to some error messages
if ($login['error_msg'] == 'LOGIN_ERROR_USERNAME' || $login['error_msg'] == 'LOGIN_ERROR_PASSWORD')
{
$err = (!$config['board_contact']) ? sprintf($user->lang[$login['error_msg']], '', '') : sprintf($user->lang[$login['error_msg']], '<a href="mailto:' . htmlspecialchars($config['board_contact']) . '">', '</a>');
}
echo recoding_for_site($err) . '<br />';
}
// Show login form
echo '<form method="post">';
echo recoding_for_site($user->lang['USERNAME']) . ': <input type="text" name="username" id="username" size="10" title="' . recoding_for_site($user->lang['USERNAME']) . '" /> ';
echo recoding_for_site($user->lang['PASSWORD']) . ': <input type="password" name="password" id="password" size="10" title="' . recoding_for_site($user->lang['PASSWORD']) . '" />';
echo ' <input type="submit" name="login" value="LOGIN" />';
if ($config['allow_autologin'])
{
echo ' <br /><input type="checkbox" name="autologin" /> ' . recoding_for_site($user->lang['LOG_ME_IN']);
}
echo '</form>';
}
?>
-
- phpBB 1.0.0
- Сообщения: 4
- Стаж: 14 лет 4 месяца
Вопрос объединения систем авторизации сайта и форума
Имеется некий сайт, а при нём развёрнут phpbb-форум (3.0.8). База данных единая для сайта и форума.
И хозяин сайта, и создатель сайта зарегистрированы на форуме в качестве администраторов. Хочется объединить системы авторизации сайта и форума. То есть, чтобы зарегистрированный администратор форума обладал правами администратора сайта. Как это осуществить?
Программируя систему администрирования сайта, я понимаю, что надо связаться с некой uzer-таблицей (таблицами) форума, чтобы установить следующие факт: вошедший в систему пользователь зарегистрирован на форуме в качестве администратора. Этот факт я могу в качестве логической величины использовать в сессии, определяя допуск пользователя к тем или иным страницам сайта. Подскажите, если не затруднительно, в каких полях (имена полей) каких таблиц (имена таблиц) есть требуемые параметры для анализа?
И задача наоборот, если посетитель логинится на сайте, в какие таблицы форума какие параметры надо внедрить, чтобы он перешёл на форум как уже залогинившийся.
Я заметил, чтобы зайти в админку форума, надо проходить "двойной кордон" (2-раза логиниться), по этому пусть вопрос 2-го кордона для входа в админку форума пока не рассматривается.
И хозяин сайта, и создатель сайта зарегистрированы на форуме в качестве администраторов. Хочется объединить системы авторизации сайта и форума. То есть, чтобы зарегистрированный администратор форума обладал правами администратора сайта. Как это осуществить?
Программируя систему администрирования сайта, я понимаю, что надо связаться с некой uzer-таблицей (таблицами) форума, чтобы установить следующие факт: вошедший в систему пользователь зарегистрирован на форуме в качестве администратора. Этот факт я могу в качестве логической величины использовать в сессии, определяя допуск пользователя к тем или иным страницам сайта. Подскажите, если не затруднительно, в каких полях (имена полей) каких таблиц (имена таблиц) есть требуемые параметры для анализа?
И задача наоборот, если посетитель логинится на сайте, в какие таблицы форума какие параметры надо внедрить, чтобы он перешёл на форум как уже залогинившийся.
Я заметил, чтобы зайти в админку форума, надо проходить "двойной кордон" (2-раза логиниться), по этому пусть вопрос 2-го кордона для входа в админку форума пока не рассматривается.
-
- Former team member
- Сообщения: 1429
- Стаж: 17 лет 2 месяца
- Откуда: Москва
- Благодарил (а): 40 раз
- Поблагодарили: 50 раз
Re: Вопрос объединения систем авторизации сайта и форума
Для многих движков есть мостики.igrok писал(а):Имеется некий сайт
Не известно, что увас стоит, какой движок сайта.igrok писал(а): в какие таблицы форума какие параметры надо внедрить, чтобы он перешёл на форум как уже залогинившийся
Внимательно изучаем форум и чиаем FAQ. 95% всех ответов на возможные вопросы там уже есть!
Правила
Мини FAQ по phpBB 3.1.x/3.2.x/3.3.x
Как устанавливать расширения
Правила
Мини FAQ по phpBB 3.1.x/3.2.x/3.3.x
Как устанавливать расширения
-
- phpBB 1.0.0
- Сообщения: 4
- Стаж: 14 лет 4 месяца
Re: Вопрос объединения систем авторизации сайта и форума
Из готовых движков я использовал только движок форума. Движок сайта пишу на PHP сам. Поэтому, мне бы знать "точки привязки", остальное постараюсь осилить.
-
- Former team member
- Сообщения: 1429
- Стаж: 17 лет 2 месяца
- Откуда: Москва
- Благодарил (а): 40 раз
- Поблагодарили: 50 раз
Re: Вопрос объединения систем авторизации сайта и форума
Смотря какой степени интеграции вы хотите добиться. Права доступа, смена пароля, регистрация, авторизация и т.д.
Поставьте четко задачу. Какие требования?
Поставьте четко задачу. Какие требования?
Внимательно изучаем форум и чиаем FAQ. 95% всех ответов на возможные вопросы там уже есть!
Правила
Мини FAQ по phpBB 3.1.x/3.2.x/3.3.x
Как устанавливать расширения
Правила
Мини FAQ по phpBB 3.1.x/3.2.x/3.3.x
Как устанавливать расширения
-
- phpBB 1.0.0
- Сообщения: 4
- Стаж: 14 лет 4 месяца
Re: Вопрос объединения систем авторизации сайта и форума
Вопрос авторизации (совместной сайта и форума).
Расуждаю так: скажем, некий (логин)Иван (пароль)Пупкин зарегистрирован на форуме в качестве администратора. Полагаю, что "звание" администратора соответствует некой логической "галочке" в какой-то юзер-таблице БД (в графе данного юзера - Пупкина Ивана). Когда Пупкин Иван авторизуется на форуме, предполагаю, что система форума проверяет его принадлежность зарегистрированным пользователям и конкретно к группе администраторов и выставляет некий "флажок" в сессии. Получается, пока Пупкин бродит по форуму, на каждой странице считывается этот "флажок" для определения полномочий Пупкина. Значит если Пупкин перейдёт по ссылке с форума на сайт, то флажок останется в сессии, а значит я могу перехватить этот флажок и по его состоянию судить допускать ли пользователя к администрированию сайта или нет.
В итоге, мне нужно знать либо сессионную переменную, которая образуется при авторизации на форуме администратора, либо идти другим путём... с изначальной авторизацией Пупкина на сайте, с дальнейшим анализом таблиц форума, чтобы он на форум уже переходил, как авторизованный клиент.
Затем, возможно, не всякий администратор форума будет допущен к администрированию сайта. Поэтому мне бы очень не помешала бы какая-нибудь пользовательская галочка персонально устанавливаемая из админки форума и означающая допуск к администрированию сайта. В этом случае можно, наверное, было бы при авторизации данного пользователя на форуме формировать сессионную логическую переменную, которую я мог бы анализировать уже на сайте в качестве определителя, дающего допуск к администрированию сайта.
Расуждаю так: скажем, некий (логин)Иван (пароль)Пупкин зарегистрирован на форуме в качестве администратора. Полагаю, что "звание" администратора соответствует некой логической "галочке" в какой-то юзер-таблице БД (в графе данного юзера - Пупкина Ивана). Когда Пупкин Иван авторизуется на форуме, предполагаю, что система форума проверяет его принадлежность зарегистрированным пользователям и конкретно к группе администраторов и выставляет некий "флажок" в сессии. Получается, пока Пупкин бродит по форуму, на каждой странице считывается этот "флажок" для определения полномочий Пупкина. Значит если Пупкин перейдёт по ссылке с форума на сайт, то флажок останется в сессии, а значит я могу перехватить этот флажок и по его состоянию судить допускать ли пользователя к администрированию сайта или нет.
В итоге, мне нужно знать либо сессионную переменную, которая образуется при авторизации на форуме администратора, либо идти другим путём... с изначальной авторизацией Пупкина на сайте, с дальнейшим анализом таблиц форума, чтобы он на форум уже переходил, как авторизованный клиент.
Затем, возможно, не всякий администратор форума будет допущен к администрированию сайта. Поэтому мне бы очень не помешала бы какая-нибудь пользовательская галочка персонально устанавливаемая из админки форума и означающая допуск к администрированию сайта. В этом случае можно, наверное, было бы при авторизации данного пользователя на форуме формировать сессионную логическую переменную, которую я мог бы анализировать уже на сайте в качестве определителя, дающего допуск к администрированию сайта.
-
- phpBB Guru
- Сообщения: 16948
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1701 раз
Re: Вопрос объединения систем авторизации сайта и форума
igrok
[FAQ RC] Интеграция входа на конференцию с сайтом
Добавлено спустя 2 минуты 57 секунд:
После интеграции сессии форума в сайт можно использовать систему прав доступа phpBB.
Например,
[FAQ RC] Интеграция входа на конференцию с сайтом
Добавлено спустя 2 минуты 57 секунд:
После интеграции сессии форума в сайт можно использовать систему прав доступа phpBB.
Например,
$auth->acl_get('a_');
- это администратор.-
- phpBB 1.0.0
- Сообщения: 4
- Стаж: 14 лет 4 месяца
-
- Former team member
- Сообщения: 2616
- Стаж: 19 лет 9 месяцев
- Откуда: Новосибирск
- Поблагодарили: 3 раза
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Темы объединены.
Самая страшная ошибка, это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
Первая помощь по всем phpBB-вопросам: phpBB2 и phpBB3 FAQ; Правила общения;
Все консультации в icq или личке - на платной основе.
phpBB3 [db_update.php generator]
Первая помощь по всем phpBB-вопросам: phpBB2 и phpBB3 FAQ; Правила общения;
Все консультации в icq или личке - на платной основе.
-
- phpBB 1.0.0
- Сообщения: 2
- Стаж: 14 лет 4 месяца
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Ранее звучал вопрос и он остался без ответа, я повторюсь.
Как при превышении количества попыток входа, в скрипте rxu'a вставить каптчу от phpbb3 (полностью эмулировать страницу входа phpbb3)?
Хотя бы дайте направление для раскопок. Заранее спасибо!
Как при превышении количества попыток входа, в скрипте rxu'a вставить каптчу от phpbb3 (полностью эмулировать страницу входа phpbb3)?
Хотя бы дайте направление для раскопок. Заранее спасибо!
-
- phpBB 1.0.0
- Сообщения: 2
- Стаж: 14 лет 4 месяца
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Сам спросил, сам овечаю как добавить каптчу.
Курил функцию login_box() из functions.php и вам советую.
Курил функцию login_box() из functions.php и вам советую.
Код: Выделить всё
if (isset($_POST['login']))
{
$template = new template();
switch ($login['status'])
{
case LOGIN_ERROR_ATTEMPTS:
$captcha = phpbb_captcha_factory::get_instance($config['captcha_plugin']);
$captcha->init(CONFIRM_LOGIN);
$template->assign_vars(array('CAPTCHA_TEMPLATE' => $captcha->get_template(),));
$err = $user->lang[$login['error_msg']];
break;
case LOGIN_ERROR_PASSWORD_CONVERT:
$err = sprintf(
$user->lang[$result['error_msg']],
($config['email_enable']) ? '<a href="' . append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=sendpassword') . '">' : '',
($config['email_enable']) ? '</a>' : '',
($config['board_contact']) ? '<a href="mailto:' . htmlspecialchars($config['board_contact']) . '">' : '',
($config['board_contact']) ? '</a>' : ''
);
break;
default:
$err = $user->lang[$login['error_msg']];
if ($login['error_msg'] == 'LOGIN_ERROR_USERNAME' || $login['error_msg'] == 'LOGIN_ERROR_PASSWORD')
{
$err = (!$config['board_contact']) ? sprintf($user->lang[$login['error_msg']], '', '') : sprintf($user->lang[$login['error_msg']], '<a href="mailto:' . htmlspecialchars($config['board_contact']) . '">', '</a>');
}
break;
}
echo $err; // Выводим ошибки
if($login['status']==LOGIN_ERROR_ATTEMPTS)
{
echo '<img src="Ваш путь/forum/ucp.php?mode=confirm&'.$template->_rootref['CONFIRM_IMAGE_LINK'].'&null=" alt="Код подтверждения" />
<input type="text" name="confirm_code" size="8" maxlength="8" title="Код подтверждения" />
<input type="hidden" name="confirm_id" value="'.$template->_rootref['CONFIRM_ID'].'" />';
}
}
-
- phpBB 1.0.0
- Сообщения: 3
- Стаж: 14 лет 4 месяца
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Нужна помощь.
Есть скрипт интеграции пользователей с сайтом, но для его работы в форуме нужно перенаправлять с авторизации и регистрации на аналогичные страницы сайта.
Собственно, где и как это сделать ? )
Есть скрипт интеграции пользователей с сайтом, но для его работы в форуме нужно перенаправлять с авторизации и регистрации на аналогичные страницы сайта.
Собственно, где и как это сделать ? )
-
- Поддержка
- Сообщения: 3336
- Стаж: 16 лет 1 месяц
- Благодарил (а): 17 раз
- Поблагодарили: 561 раз
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Изменить ссылки на авторизацию и регистрацию можно в файле styles/stylename/template/overall_header.html.
-
- phpBB 1.0.0
- Сообщения: 3
- Стаж: 14 лет 4 месяца
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
А там, собственно, что где ? )
Что-то не могу найти..
Что-то не могу найти..
-
- Former team member
- Сообщения: 2233
- Стаж: 16 лет 4 месяца
- Благодарил (а): 142 раза
- Поблагодарили: 140 раз
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Tuan
Регистрация
Вход
Регистрация
<a href="{U_REGISTER}">
Вход
<a href="{U_LOGIN_LOGOUT}"