Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Создание сайта с авторизацией через phpBB

Проблемы с установкой или работой phpBB 3.2.x? Получите помощь здесь!
Внимание: с 7 ноября 2020 года phpBB Group завершено дальнейшее развитие phpBB версии 3.2, а с 1 августа 2024 года будет прекращена её поддержка.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
t4p2
phpBB 2.0.1
Сообщения: 256
Стаж: 8 лет 8 месяцев
Откуда: Okayma
Благодарил (а): 46 раз
Поблагодарили: 1 раз
Контактная информация:

Создание сайта с авторизацией через phpBB

Сообщение t4p2 »

Доброго времени суток.
Подскажите пожалуйста, как на новом домене сделать авторизацию через phpBB?

Скачала я скрипт с этого раздела форума - [FAQ RC] Интеграция входа на конференцию с сайтом.
Поменяла в файле init.php путь к форуму:

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

define('PHPBB_ROOT_PATH', '../forum/');
Открываю страничку, а у меня ошибки:
Warning: Cannot modify header information - headers already sent by (output started at C:\OSPanel\domains\site.ru\service\index.php:19) in C:\OSPanel\domains\site.ru\forum\includes\functions.php on line 1964

Что-то связано с сессией...
Открываю index.php:19, там:

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

<?php include ('auth.php');?>
файл auth.php в той-же директории

Открываю functions.php on line 1964, там:

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

header("$version $code $message", true, $code);
Что-то непонятное...

Следом за этой ошибкой отображается еще такая ошибка:
Illegal use of $_POST. You must use the request class to access input data. Found in C:\OSPanel\domains\site.ru\service\auth.php on line 62. This error message was generated by deactivated_super_global.

Открываю auth.php on line 62, там:

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

$err = $_POST['error'];
Подскажите пожалуйста, как починить?
- Ищy выход из Интеpнета...
Изображение
Аватара пользователя
t4p2
phpBB 2.0.1
Сообщения: 256
Стаж: 8 лет 8 месяцев
Откуда: Okayma
Благодарил (а): 46 раз
Поблагодарили: 1 раз
Контактная информация:

Незаконное использование $_GET

Сообщение t4p2 »

Возникла ошибка:
Illegal use of $_GET. You must use the request class to access input data. Found in C:\OSPanel\domains\site.ru\service\index.php on line 4. This error message was generated by deactivated_super_global.

При использовании кода:

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

$page = (isset($_GET['page']) && !empty($_GET['page']))?trim($_GET['page']):'index';
Я так полагаю, что тут необходимо использовать глобальные переменные? Как починить?

Отправлено спустя 13 минут 37 секунд:
заменила на

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

$page = (isset($request_var['page']) && !empty($request_var['page']))?trim($request_var['page']):'index';
все заработало... но сессии не сохраняет.
- Ищy выход из Интеpнета...
Изображение
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 5 месяцев
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

Re: Создание сайта с авторизацией через phpBB

Сообщение Pazh »

t4p2 писал(а): 12.10.2018 7:23 Illegal use of $_POST. You must use the request class to access input data. Found in C:\OSPanel\domains\site.ru\service\auth.php on line 62. This error message was generated by deactivated_super_global.
google переводчик заблокирован? тут все понятно если перевести

Незаконное использование $_GET
Зачем плодить однотипные темы?
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12414
Стаж: 12 лет 8 месяцев
Благодарил (а): 224 раза
Поблагодарили: 3524 раза
Контактная информация:

Re: Незаконное использование $_GET

Сообщение Татьяна5 »

С $ - это переменная, не функция
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: Создание сайта с авторизацией через phpBB

Сообщение Sheer »

Pazh писал(а): 12.10.2018 16:15 тут все понятно если перевести
t4p2 писал(а): 12.10.2018 10:45 You must use the request class to access input data
Для получения данных вы должны использовать класс request
Пример

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

global $request;
$my_var = $request->variable('var', 0);
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
t4p2
phpBB 2.0.1
Сообщения: 256
Стаж: 8 лет 8 месяцев
Откуда: Okayma
Благодарил (а): 46 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Создание сайта с авторизацией через phpBB

Сообщение t4p2 »

не совсем понятно. Как в этом коде это применить?

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

$page = (isset($_GET['page']) && !empty($_GET['page']))?trim($_GET['page']):'index';
- Ищy выход из Интеpнета...
Изображение
Аватара пользователя
t4p2
phpBB 2.0.1
Сообщения: 256
Стаж: 8 лет 8 месяцев
Откуда: Okayma
Благодарил (а): 46 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Создание сайта с авторизацией через phpBB

Сообщение t4p2 »

Татьяна5 писал(а): 17.10.2018 16:33 page - это строка?
Что-то не совсем понятно... Попробую по порядку разобраться.

Имеется у меня заготовка. Файл index.php

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

<?php
$page = (isset($_GET['page']) && !empty($_GET['page']))?trim($_GET['page']):'index';
switch($page){
	case 'index':
	echo 'Стартовая';
    break;
	case 'stat':
	echo 'Вспомогательная';
    break;
	case 'test':
    echo 'Тестовая';
	break;
	default:
        echo '404.php';
    break;
}
?>
Скачала я файл login.php

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

<?php
/**
*
* @package phpBB3
* @version $Id: login.php,v 1.2.0 2008/03/09 17:54:25 rxu Exp $
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
* Minimum Requirement: PHP 4.3.3
*/

/*
* This code is an example for board login integration on sites.
*/

/**
*/
define('IN_PHPBB', true);

// Set phpBB root folder properly. Change in according to the actual board folder
define('PHPBB_ROOT_PATH', './phpbb3/');
$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');

// 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)
{
	$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');

// 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, ' . get_username_string('full', $user->data['user_id'], $user->data['username'], $user->data['user_colour']);
	echo '<br />' . get_user_avatar($user->data['user_avatar'], $user->data['user_avatar_type'], $user->data['user_avatar_width'], $user->data['user_avatar_height']);
	echo '<form method="post" action="login.php">';
	echo '	<input type="submit" name="logout" value="' . $user->lang['LOGOUT'] . '" />';
	echo '</form>';
	
	$online_list = array();
	$online_list = online_list();
	if(!empty($online_list))
	{
		echo "<hr>{$user->lang['WHO_IS_ONLINE']}</hr><p>{$online_list['TOTAL_USERS_ONLINE']} ({$online_list['L_ONLINE_EXPLAIN']})<br />{$online_list['RECORD_USERS']}<br /> <br />{$online_list['LOGGED_IN_USER_LIST']}";
	}
	
	$legend = '';
	$legend = display_legend();
	if($legend)
	{
		echo "<br /><p>{$user->lang['LEGEND']}: $legend</p>";
	}
}
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 $err . '<br />';
	}
	
	// Show login form
	echo '<form method="post" action="login.php">';
	echo $user->lang['USERNAME'] . ':&nbsp;<input type="text" name="username" id="username" size="10" title="' . $user->lang['USERNAME'] . '" /> ';
	echo $user->lang['PASSWORD'] . ':&nbsp;<input type="password" name="password" id="password" size="10" title="' . $user->lang['PASSWORD'] . '" />';
	echo '	<input type="submit" name="login" value="' . $user->lang['LOGIN'] . '" />';
	if ($config['allow_autologin'])
	{
		echo '  <br /><input type="checkbox" name="autologin" /> ' . $user->lang['LOG_ME_IN'];
	}
	echo '</form>';
}

function online_list()
{
	global $db, $config, $user, $auth, $phpEx;

	$l_online_users = $online_userlist = $l_online_record = '';

	if ($config['load_online'] && $config['load_online_time'])
	{
		$logged_visible_online = $logged_hidden_online = $guests_online = $prev_user_id = 0;
		$prev_session_ip = $reading_sql = '';

		if (!empty($_REQUEST['f']))
		{
			$f = request_var('f', 0);

			$reading_sql = ' AND s.session_page ' . $db->sql_like_expression("{$db->any_char}_f_={$f}x{$db->any_char}");
		}

		// Get number of online guests
		if (!$config['load_online_guests'])
		{
			if ($db->sql_layer === 'sqlite')
			{
				$sql = 'SELECT COUNT(session_ip) as num_guests
					FROM (
						SELECT DISTINCT s.session_ip
							FROM ' . SESSIONS_TABLE . ' s
							WHERE s.session_user_id = ' . ANONYMOUS . '
								AND s.session_time >= ' . (time() - ($config['load_online_time'] * 60)) .
								$reading_sql .
					')';
			}
			else
			{
				$sql = 'SELECT COUNT(DISTINCT s.session_ip) as num_guests
					FROM ' . SESSIONS_TABLE . ' s
					WHERE s.session_user_id = ' . ANONYMOUS . '
						AND s.session_time >= ' . (time() - ($config['load_online_time'] * 60)) .
					$reading_sql;
			}
			$result = $db->sql_query($sql);
			$guests_online = (int) $db->sql_fetchfield('num_guests');
			$db->sql_freeresult($result);
		}

		$sql = 'SELECT u.username, u.username_clean, u.user_id, u.user_type, u.user_allow_viewonline, u.user_colour, s.session_ip, s.session_viewonline
			FROM ' . USERS_TABLE . ' u, ' . SESSIONS_TABLE . ' s
			WHERE s.session_time >= ' . (time() - (intval($config['load_online_time']) * 60)) .
				$reading_sql .
				((!$config['load_online_guests']) ? ' AND s.session_user_id <> ' . ANONYMOUS : '') . '
				AND u.user_id = s.session_user_id
			ORDER BY u.username_clean ASC, s.session_ip ASC';
		$result = $db->sql_query($sql);

		while ($row = $db->sql_fetchrow($result))
		{
			// User is logged in and therefore not a guest
			if ($row['user_id'] != ANONYMOUS)
			{
				// Skip multiple sessions for one user
				if ($row['user_id'] != $prev_user_id)
				{
					if ($row['session_viewonline'])
					{
						$logged_visible_online++;
					}
					else
					{
						$row['username'] = '<em>' . $row['username'] . '</em>';
						$logged_hidden_online++;
					}

					if (($row['session_viewonline']) || $auth->acl_get('u_viewonline'))
					{
						$user_online_link = get_username_string(($row['user_type'] <> USER_IGNORE) ? 'full' : 'no_profile', $row['user_id'], $row['username'], $row['user_colour']);
						$online_userlist .= ($online_userlist != '') ? ', ' . $user_online_link : $user_online_link;
					}
				}

				$prev_user_id = $row['user_id'];
			}
			else
			{
				// Skip multiple sessions for one user
				if ($row['session_ip'] != $prev_session_ip)
				{
					$guests_online++;
				}
			}

			$prev_session_ip = $row['session_ip'];
		}
		$db->sql_freeresult($result);

		if (!$online_userlist)
		{
			$online_userlist = $user->lang['NO_ONLINE_USERS'];
		}

		if (empty($_REQUEST['f']))
		{
			$online_userlist = $user->lang['REGISTERED_USERS'] . ' ' . $online_userlist;
		}
		else
		{
			$l_online = ($guests_online == 1) ? $user->lang['BROWSING_FORUM_GUEST'] : $user->lang['BROWSING_FORUM_GUESTS'];
			$online_userlist = sprintf($l_online, $online_userlist, $guests_online);
		}

		$total_online_users = $logged_visible_online + $logged_hidden_online + $guests_online;

		if ($total_online_users > $config['record_online_users'])
		{
			set_config('record_online_users', $total_online_users, true);
			set_config('record_online_date', time(), true);
		}

		// Build online listing
		$vars_online = array(
			'ONLINE'	=> array('total_online_users', 'l_t_user_s'),
			'REG'		=> array('logged_visible_online', 'l_r_user_s'),
			'HIDDEN'	=> array('logged_hidden_online', 'l_h_user_s'),
			'GUEST'		=> array('guests_online', 'l_g_user_s')
		);

		foreach ($vars_online as $l_prefix => $var_ary)
		{
			switch (${$var_ary[0]})
			{
				case 0:
					${$var_ary[1]} = $user->lang[$l_prefix . '_USERS_ZERO_TOTAL'];
				break;

				case 1:
					${$var_ary[1]} = $user->lang[$l_prefix . '_USER_TOTAL'];
				break;

				default:
					${$var_ary[1]} = $user->lang[$l_prefix . '_USERS_TOTAL'];
				break;
			}
		}
		unset($vars_online);

		$l_online_users = sprintf($l_t_user_s, $total_online_users);
		$l_online_users .= sprintf($l_r_user_s, $logged_visible_online);
		$l_online_users .= sprintf($l_h_user_s, $logged_hidden_online);
		$l_online_users .= sprintf($l_g_user_s, $guests_online);

		$l_online_record = sprintf($user->lang['RECORD_ONLINE_USERS'], $config['record_online_users'], $user->format_date($config['record_online_date']));

		$l_online_time = ($config['load_online_time'] == 1) ? 'VIEW_ONLINE_TIME' : 'VIEW_ONLINE_TIMES';
		$l_online_time = sprintf($user->lang[$l_online_time], $config['load_online_time']);
	}
	else
	{
		$l_online_time = '';
	}

	return array(
		'TOTAL_USERS_ONLINE'			=> $l_online_users,
		'LOGGED_IN_USER_LIST'			=> $online_userlist,
		'RECORD_USERS'					=> $l_online_record,
		'L_ONLINE_EXPLAIN'				=> $l_online_time,
	);
}

function display_legend()
{
	global $db, $config, $user, $auth, $phpbb_root_path, $phpEx;

	if ($auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel'))
	{
		$sql = 'SELECT group_id, group_name, group_colour, group_type
			FROM ' . GROUPS_TABLE . '
			WHERE group_legend = 1
			ORDER BY group_name ASC';
	}
	else
	{
		$sql = 'SELECT g.group_id, g.group_name, g.group_colour, g.group_type
			FROM ' . GROUPS_TABLE . ' g
			LEFT JOIN ' . USER_GROUP_TABLE . ' ug
				ON (
					g.group_id = ug.group_id
					AND ug.user_id = ' . $user->data['user_id'] . '
					AND ug.user_pending = 0
				)
			WHERE g.group_legend = 1
				AND (g.group_type <> ' . GROUP_HIDDEN . ' OR ug.user_id = ' . $user->data['user_id'] . ')
			ORDER BY g.group_name ASC';
	}
	$result = $db->sql_query($sql);

	$legend = '';
	while ($row = $db->sql_fetchrow($result))
	{
		$colour_text = ($row['group_colour']) ? ' style="color:#' . $row['group_colour'] . '"' : '';

		if ($row['group_name'] == 'BOTS')
		{
			$legend .= (($legend != '') ? ', ' : '') . '<span' . $colour_text . '>' . $user->lang['G_BOTS'] . '</span>';
		}
		else
		{
			$legend .= (($legend != '') ? ', ' : '') . '<a' . $colour_text . ' href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&amp;g=' . $row['group_id']) . '">' . (($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name']) . '</a>';
		}
	}
	$db->sql_freeresult($result);
	
	return $legend;

}
?>
В файле login.php исправила путь (в 21 строке), было:

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

define('PHPBB_ROOT_PATH', './phpbb3/');
стало:

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

define('PHPBB_ROOT_PATH', '../forum/');
Далее я файл login.php подключаю к index.php.
В самый верх добавляю:

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

<?php
include_once('login.php');
Открыла в браузере. Ошибок нет. Авторизацию прошла. После авторизации закидывает в login.php. Когда открываю index.php, то авторизация слетает...

я так полагаю, надо заменить $page на $request->variable('page', '')...
Но тогда совсем ничего не работает =(
- Ищy выход из Интеpнета...
Изображение
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12414
Стаж: 12 лет 8 месяцев
Благодарил (а): 224 раза
Поблагодарили: 3524 раза
Контактная информация:

Re: Создание сайта с авторизацией через phpBB

Сообщение Татьяна5 »

В index.php нет создания сессии
С чего бы быть там авторизованным, если авторизация не проверяется и не создаётся?

Что именно пытаетесь сделать? Готовый сайт уже есть хотя бы?
Если его нет, проще использовать Создание страниц в стиле конференции
Аватара пользователя
t4p2
phpBB 2.0.1
Сообщения: 256
Стаж: 8 лет 8 месяцев
Откуда: Okayma
Благодарил (а): 46 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Создание сайта с авторизацией через phpBB

Сообщение t4p2 »

Татьяна5 писал(а): 17.10.2018 17:52 Что именно пытаетесь сделать?
Хочется мини страничку сделать, но что-бы авторизация была через данные форума.
А подскажите пожалуйста, что необходимо вставить в index.php, что-бы все-же авторизация сохранялась, пока принудительно не выйдешь?
- Ищy выход из Интеpнета...
Изображение
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12414
Стаж: 12 лет 8 месяцев
Благодарил (а): 224 раза
Поблагодарили: 3524 раза
Контактная информация:

Re: Создание сайта с авторизацией через phpBB

Сообщение Татьяна5 »

t4p2 писал(а): 17.10.2018 17:55мини страничку
Со своей функциональностью или статическую? Для статической хватит расширения pages, с доп. функциональностью придётся писать своё
t4p2 писал(а): 17.10.2018 17:55 что необходимо вставить в index.php, что-бы все-же авторизация сохранялась
Всю "шапку" с созданием сессии
Хотя это может не помочь, т.к. в самом login.php нужна куча исправлений под 3.2 (или 3.1). Файл писался для 3.0
Аватара пользователя
t4p2
phpBB 2.0.1
Сообщения: 256
Стаж: 8 лет 8 месяцев
Откуда: Okayma
Благодарил (а): 46 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Создание сайта с авторизацией через phpBB

Сообщение t4p2 »

Татьяна5 писал(а): 17.10.2018 17:58 нужна куча исправлений под 3.2
мда уж... Что-ж мне так не везет.
А под 3.2 еще никто не делал.? =(

Отправлено спустя 9 минут 51 секунду:
Нашла тему: [3.2] Проверка логина и пароля форума для интеграции форума с сайтом, вдруг что нибудь получится )
- Ищy выход из Интеpнета...
Изображение
Аватара пользователя
t4p2
phpBB 2.0.1
Сообщения: 256
Стаж: 8 лет 8 месяцев
Откуда: Okayma
Благодарил (а): 46 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Создание сайта с авторизацией через phpBB

Сообщение t4p2 »

Татьяна5 писал(а): 17.10.2018 19:12 используйте это Создание страниц в стиле конференции. Стиль потом можно будет поменять
К сожалению совсем не подходит =(

Дело в том, что мини страничка у меня в корне домена.
- Ищy выход из Интеpнета...
Изображение
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12414
Стаж: 12 лет 8 месяцев
Благодарил (а): 224 раза
Поблагодарили: 3524 раза
Контактная информация:

Re: Создание сайта с авторизацией через phpBB

Сообщение Татьяна5 »

Можно ли перенести форум из папки в корень? - это для портала, но для расширения pages или кастомной страницы принцип тот же

Отправлено спустя 3 минуты 2 секунды:
Велосипеды это, конечно, неплохо, но не стоит их изобретать когда уже существуют навороченные модели
Ответить

Вернуться в «Поддержка phpBB 3.2.x»