[FAQ] Интеграция входа на конференцию phpBB с сайтом

Темы по наиболее часто задаваемым вопросам без привязки к версии phpBB. Читать в первую очередь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x/3.3.x | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16948
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1701 раз

[FAQ] Интеграция входа на конференцию phpBB с сайтом

Сообщение rxu »

Ниже приведен пример скрипта с интегрированной формой входа на конференцию (общего вида).
В приведённом примере папка, в которой находится скрипт, находится на один уровень выше папки конференции. Файлы конференции находятся в папке phpBB3 относительно скрипта.

По коду скрипта имеются пояснительные комментарии (на английском языке).

Вопросы принимаются в этой теме.

Версия 1.1.0 с интегрированным списком онлайн и легендой групп здесь.
Версия 1.2.0 с аватарой здесь.

Версия 2.0.1 для phpBB 3.2/3.3 здесь.

login_1.0.5.zip
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось rxu 22.05.2020 8:37, всего редактировалось 6 раз.
Изображение
Maksim90
phpBB 1.4.2
Сообщения: 65
Стаж: 16 лет 11 месяцев

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение Maksim90 »

Здравствуйте. Подскажите как можно отделить в вашем скрипте php и html в отдельные файлы?
Причем в html-шаблоне можно было бы использовать переменные такого вида как {L_REGISTER},{S_LOGIN_ACTION} и. т. д и условия <!-- IF .... --> ?

Например, как сделано в конференции
includes/functions.php

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

/**
* Generate login box or verify password
*/
function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = false, $s_display = true)
{
	global $db, $user, $template, $auth, $phpEx, $phpbb_root_path, $config;

	if (!class_exists('phpbb_captcha_factory'))
	{
		include($phpbb_root_path . 'includes/captcha/captcha_factory.' . $phpEx);
	}

	....

	page_header($user->lang['LOGIN'], false);

	$template->set_filenames(array(
		'body' => 'login_body.html')
	);
	make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));

	page_footer();
}
А вот его html код
styles/prosiler/template/login_body.html

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

!-- INCLUDE overall_header.html -->

<script type="text/javascript">
// <![CDATA[
	onload_functions.push('document.getElementById("<!-- IF S_ADMIN_AUTH -->{PASSWORD_CREDENTIAL}<!-- ELSE -->{USERNAME_CREDENTIAL}<!-- ENDIF -->").focus();');
// ]]>
</script>

<form action="{S_LOGIN_ACTION}" method="post" id="login">
<div class="panel">
	<div class="inner"><span class="corners-top"><span></span></span>

	<div class="content">
		<h2><!-- IF LOGIN_EXPLAIN -->{LOGIN_EXPLAIN}<!-- ELSE -->{L_LOGIN}<!-- ENDIF --></h2>
           ......

<!-- IF not S_ADMIN_AUTH and S_REGISTER_ENABLED -->
	<div class="panel">
		<div class="inner"><span class="corners-top"><span></span></span>

		<div class="content">
			<h3>{L_REGISTER}</h3>
			<p>{L_LOGIN_INFO}</p>
			<p><strong><a href="{U_TERMS_USE}">{L_TERMS_USE}</a> | <a href="{U_PRIVACY}">{L_PRIVACY}</a></strong></p>
			<hr class="dashed" />
			<p><a href="{U_REGISTER}" class="button2">{L_REGISTER}</a></p>
		</div>

		<span class="corners-bottom"><span></span></span></div>
	</div>
<!-- ENDIF -->

</form>

<!-- INCLUDE overall_footer.html -->
KODEAK
phpBB 1.2.1
Сообщения: 24
Стаж: 16 лет 6 месяцев

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение KODEAK »

Если с английским хорошо, то Tutorial.Adding pages
firg
phpBB 1.0.0
Сообщения: 3
Стаж: 13 лет 5 месяцев

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение firg »

Запостил я тут в одну тему свой вариант решения интеграции системы авторизации в любую страничку HTML, модераторы пропустили сообщение, так что думаю и тут пропустят.

Это можно сказать готовое решение, в общем смотрите архив, там есть пример.
Пользуйтесь на здоровье. :)

Для создания данного решения я использовал скрипт предоставленный пользователем rxu.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
zevilz
phpBB 1.0.0
Сообщения: 7
Стаж: 13 лет 2 месяца

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение zevilz »

скачал архив и поставил на сайт. Вход без проблем работает в опере. При логине в хроме страница просто обновляется, но в базу добавляется сессия. В чем проблема? И как активировать ссылку для зарегистрированных юзеров на странице сайта? У меня раньше при использовании скрипта с первого поста работал вот этот код:

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

if(isset($login))
	{
print <<<HERE
<div id="add_comm">
<a class="add_comment">добавить</a>   
<form action="comment_video.php" method="post" name="form_com">
<p><label>Ваше имя: </label><input name="author" type="text" size="30" maxlength="30"></p>
<p><label>Текст комментария (HTML теги не поддерживаются): </label><br><textarea name="text" cols="50" rows="4"></textarea></p>
<p>Введите число, указанное на картинке:</p>
<p class='pr1'><img src="$myrow_check_img[img]" >
<input  name="pr" type="text" size="7" maxlength="7"></p>
<input name="id" type="hidden" value="$id">
<input name="id2" type="hidden" value="$myrow_check_img[id]">
<input name="cat" type="hidden" value="$id_cat">
<p><input name="sub_com" type="submit" value="Добавить комментарий"></p>
<br>
</form> 
</div><br>
HERE;
}
else {echo "<p>Вы не можете добавлять комментарии</p>";}?>
а сейчас не работает.
И почему то еще после входа вижу только Hello, user и кнопку выхода. Приходится делать php include ('auth.php'); сразу после include ("init.php"); чтобы увидеть содержимое страницы.
И еще вопросик. Как сделать, чтобы после входа юзера не выбразывало на index.php, а оставался на той же странице, где осуществлял вход?
zevilz
phpBB 1.0.0
Сообщения: 7
Стаж: 13 лет 2 месяца

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение zevilz »

С кодом в login.php

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

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);
		header("Location: index.php");
		//echo ('<script language="JavaScript">javascript:history.go(-1);</script>');
	}
}
вход проходит без проблем в Опере, в хроме страница просто обновляется, но создается сессия и, похоже сразу удаляется.

С кодом

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

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, ' . get_username_string('full', $user->data['user_id'], $user->data['username'], $user->data['user_colour']);
	echo '<form method="post" action="login.php">';
	echo '	<input type="submit" name="logout" value="LOGOUT" />';
	echo '</form>';
}
вход происходит во всех браузерах, но при перезагрузке страницы повторно происходит отправка данных формы и вход. И при обновлении страницы постоянно необходимо подтвердить повторную отправку данных формы во всплывающем окошке. В чем проблема? Подскажите, пожалуйста.
zevilz
phpBB 1.0.0
Сообщения: 7
Стаж: 13 лет 2 месяца

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение zevilz »

В случае со вторым кодом после входа в Хроме перехожу на главную - вход не произведен. На хроме - вход произведен. Короче, и в 1м и во 2м коде имеется нормальный вход в опере, но не в хроме. Что такое может быть в этом хроме?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16948
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1701 раз

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение rxu »

Настройки куки проверьте.
Изображение
zevilz
phpBB 1.0.0
Сообщения: 7
Стаж: 13 лет 2 месяца

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение zevilz »

А где их проверять, в браузере или на сайте? Я просто вообще раньше с куками не связывался. В настройках браузера я вообще все куки удалил

Добавлено спустя 11 минут 30 секунд:
При входе в хроме создается вот такой непонятный файл куки (прикреплен к сообщению). Вместо адреса, какая то билиберда...

Добавлено спустя 28 минут 46 секунд:
Мне кажется проблема с локальным сервером, т.к. на нем мой сайт. Наверное не может правильно передавать куки, хотя с оперой все ок
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16948
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1701 раз

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение rxu »

А причем тут гугл?
Надо сравнить домен сайта, домен форума и домен куки из (админки).
Изображение
zevilz
phpBB 1.0.0
Сообщения: 7
Стаж: 13 лет 2 месяца

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение zevilz »

я про первую строчку, а не про гугл. я сейчас в инет выложил сайт, проблем с куками не стало. Так что в локальном серваке проблема

Добавлено спустя 1 час 39 минут 38 секунд:
Все, разобрался. Деменное имя было из одного слова. Добавил .zz, и заработало)
zevilz
phpBB 1.0.0
Сообщения: 7
Стаж: 13 лет 2 месяца

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение zevilz »

В какой файл форума выводит сообщения об ошибках ввода пароля и логина? Дело в том, что у меня форма входа находится в выдвигающейся панели и хотелось бы чтобы сообщения об ошибках выводились в этой же панели без перезагрузки страницы. Изначально в файлах логина этой панели ошибки появлялись в этой же панели без перезагрузки. Вот пример кода:

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

	if(!$_POST['username'] || !$_POST['password'])
		$err[] = 'Все поля должны быть заполнены!';
firg
phpBB 1.0.0
Сообщения: 3
Стаж: 13 лет 5 месяцев

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение firg »

Не уверен, но мне кажется, что система авторизации phpBB предусматривает перезагрузку страницы в любом случае.
Возможно реально как-то, с помощью JavaScript (возможно Ajax) провернуть проверку наличия/отсутствия активной сессии пользователя и принять соответствующие действия (создать сессию или выдать данные пользователя в нужном месте странички), но я не знаком с этими технологиями.

Сообщения о неправильном вводе логина/пароля генерируются самим движком phpBB в файле login.php (говорю про мой способ решения) на 69-ой строке:

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

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>');
		}
Потом эта переменная отправляется обратно на главную страничку.

Вот где-то примерно здесь нужно копать.
george_of_314
phpBB 1.2.0
Сообщения: 12
Стаж: 13 лет 7 месяцев

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение george_of_314 »

Интересная ситуация
Форум лежит по адресу www.somesite.com.ua/forum
В настройках куки домен: www.somesite.com.ua, путь /forum/
Есть страница в корне сайта, форма обратной связи
В странице инклудится файл init.php, тоже в корне сайта

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

<?PHP
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);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('ucp');
?>
В странице в поле имя вставляется имя залогиненого пользователя $user->data['username']; (должно вставляться)

Ситуация такова: на Форуме залогинен, лажу по форуму, все нормально. Захожу на страницу обратной связи - вместо имени пользователя показывает Anonymous, а в форуме разлогинивает

Уже второй день над этим бьюсь
Подскажите, что может быть не так?
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3336
Стаж: 16 лет 1 месяц
Благодарил (а): 17 раз
Поблагодарили: 561 раз

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение Nekstati »

george_of_314 писал(а):В настройках куки домен: www.somesite.com.ua, путь /forum/
Причина в этом. Задайте путь "/" (один слэш).
george_of_314
phpBB 1.2.0
Сообщения: 12
Стаж: 13 лет 7 месяцев

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение george_of_314 »

При одном слеше вообще на форум попасть не могу
Ввожу пароль, пишет - вы авторизированы, далее редиректит на главную с формой входа
Попробую перенастроить форум с нуля - эту версию переносил с локального хоста с другими настройками
Перенесено из форума FAQ (phpBB 3.0.x) в форум FAQ 28.09.2016 15:02 модератором rxu

Вернуться в «FAQ»