Необходимо, чтобы гость при попадании на любую страницу сайта сначала залогинивался, а потом уже творил всё, что ему надо (например, для того, чтобы не совали свой длинный нос и взгляд на категории и форумы, предназначенные только для вошедших определенных участников).
Есть вариант:
Код: Выделить всё
Перенаправление анонимных посетителей на страницу входа
СообщениеАвтор: Kastaneda » 21.04.2008, 14:17
Следующие изменения в коде переадресовывают гостей с главной страницы на страницу входа.
Открыть: index.php
Найти что-то вроде этого:
Код: Выделить все
<?php
define('IN_PHPBB', true);
$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('viewforum');
После найденного добавить:
Код: Выделить все
if (!$user->data['is_registered'])
{
login_box();
}
Это же изменение может работать и на других страницах, таких как FAQ список участников. Возьмём для примера список участников (по умолчанию список участником итак скрыт от гостей, поэтому нет необходимости в изменениях — я просто даю пример). Добавьте вышеприведённый код после следующие кода в файле memberlist.php:
Код: Выделить все
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup(array('memberlist', 'groups'));
Предотвратить гостям доступ к страницам просмотра тем и форумов можно следующим образом:
Открыть: viewtopic.php
Найти:
Код: Выделить все
// Initial var setup
$forum_id = request_var('f', 0);
$topic_id = request_var('t', 0);
$post_id = request_var('p', 0);
$voted_id = request_var('vote_id', array('' => 0));
$start = request_var('start', 0);
$view = request_var('view', '');
$sort_days = request_var('st', ((!empty($user->data['user_post_show_days'])) ? $user->data['user_post_show_days'] : 0));
$sort_key = request_var('sk', ((!empty($user->data['user_post_sortby_type'])) ? $user->data['user_post_sortby_type'] : 't'));
$sort_dir = request_var('sd', ((!empty($user->data['user_post_sortby_dir'])) ? $user->data['user_post_sortby_dir'] : 'a'));
После добавить:
Код: Выделить все
if (!$user->data['is_registered'])
{
login_box();
}
Открыть: viewforum.php
Найти:
Код: Выделить все
// Start initial var setup
$forum_id = request_var('f', 0);
$mark_read = request_var('mark', '');
$start = request_var('start', 0);
$sort_days = request_var('st', ((!empty($user->data['user_topic_show_days'])) ? $user->data['user_topic_show_days'] : 0));
$sort_key = request_var('sk', ((!empty($user->data['user_topic_sortby_type'])) ? $user->data['user_topic_sortby_type'] : 't'));
$sort_dir = request_var('sd', ((!empty($user->data['user_topic_sortby_dir'])) ? $user->data['user_topic_sortby_dir'] : 'd'));
После добавить:
Код: Выделить все
if (!$user->data['is_registered'])
{
login_box();
}
Вопрос: Есть ли вариант. в т.ч., если нужно и с использованием вышеуказанного кода, чтобы можно было включать и выключать функцию редиректа на залогинивание через админ-панель?

