Smart Log In Redirect (By Smartor)

Ответы на вопросы, связанные с модами для phpBB 2.0.x, кроме относящихся к форуму Для авторов (phpBB 2.0.x).
Аватара пользователя
Rick
phpBB 1.4.2
Сообщения: 63
Стаж: 20 лет 5 месяцев

Smart Log In Redirect (By Smartor)

Сообщение Rick »

Мод находится тут: http://smartor.is-root.com/viewtopic.php?t=2716
По задумке автора, этот мод позволяет после log in, либо log out, переместиться на ту страницу, с которой было произведено то самое log in/out. У меня версия 2.0.13, но этот мод не работает... хотя очень сильно бы пригодился, т.к. входят люди у меня не только с форума, но и с других страниц сайта (а по умолчанию, после log in идет редирект на главную страницу форума). Может кто знает, как с этим бороться?
Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Стаж: 20 лет 3 месяца
Откуда: Москва

Сообщение Coagulant »

У меня на сайте этот мод успешно функционирует.
Возможно, дело в функции redirect(). Я для себя использовал исправление из документации.
Аватара пользователя
Rick
phpBB 1.4.2
Сообщения: 63
Стаж: 20 лет 5 месяцев

Сообщение Rick »

Coagulant
А Вы выполнили все указания их хака?
Там есть момент:

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

# This step is only needed for phpBB 2.0.4
# It's just trying to fix a bug of phpBB 2.0.4, which may affect this mod
Я не стал делать эти изменения... может, дело в этом?
Вообще, этот ли мод Вы ставили (может у меня версия битая?)

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

##############################################################
## MOD Title: Smart Log In Redirect
## MOD Author: Smartor < smartor_xp@hotmail.com > (Hoang Ngoc Tu) http://smartor.is-root.com
## MOD Description:	This MOD will redirect user to the page when he
##					clicked "log in.out" after logging in successfully
##					It can bring much more convenience to your surfing experience :)
## MOD Version: 1.0.1
##
## Installation Level: easy
## Installation Time: 1 Minutes
## Files To Edit: 2
##		includes/page_header.php
##		includes/functions.php
##
## Included Files: N/A
##########################


#
#-----[ OPEN ]--------------------------------------------
#
includes/page_header.php

#
#-----[ FIND ]--------------------------------------------
#
if ( $userdata['session_logged_in'] )
{
	$u_login_logout = 'login.'.$phpEx.'?logout=true&sid=' . $userdata['session_id'];
	$l_login_logout = $lang['Logout'] . ' [ ' . $userdata['username'] . ' ]';
}
else
{
	$u_login_logout = 'login.'.$phpEx;
	$l_login_logout = $lang['Login'];
}


#
#-----[ REPLACE WITH ]------------------------------------
#
if ( $userdata['session_logged_in'] )
{
	$u_login_logout = 'login.'.$phpEx.'?logout=true&sid=' . $userdata['session_id'];
	$l_login_logout = $lang['Logout'] . ' [ ' . $userdata['username'] . ' ]';
}
else
{
	$smart_redirect = strrchr($HTTP_SERVER_VARS['PHP_SELF'], '/');
	$smart_redirect = substr($smart_redirect, 1, strlen($smart_redirect));

	if( ($smart_redirect == ('profile.'.$phpEx)) or ($smart_redirect == ('login.'.$phpEx)) )
	{
		$smart_redirect = '';
	}

	if( isset($HTTP_GET_VARS) and !empty($smart_redirect) )
	{		
		$smart_get_keys = array_keys($HTTP_GET_VARS);

		for ($i = 0; $i < count($HTTP_GET_VARS); $i++)
		{
			if ($smart_get_keys[$i] != 'sid')
			{
				$smart_redirect .= '&' . $smart_get_keys[$i] . '=' . $HTTP_GET_VARS[$smart_get_keys[$i]];
			}
		}
	}

	$u_login_logout = 'login.' . $phpEx;
	$u_login_logout .= (!empty($smart_redirect)) ? '?redirect=' . $smart_redirect : '';
	$l_login_logout = $lang['Login'];
}


# This step is only needed for phpBB 2.0.4
# It's just trying to fix a bug of phpBB 2.0.4, which may affect this mod
#-----[ OPEN ]----------------------------------------
#
includes/funtions.php

#
#-----[ FIND ]----------------------------------------
#
function redirect($url)
{
	global $db, $board_config;

	if (!empty($db))
	{
		$db->sql_close();
	}

	$server_protocol = ($board_config['cookie_secure']) ? 'https://' : 'http://';
	$server_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['server_name']));
	$server_port = ($board_config['server_port'] <> 80) ? ':' . trim($board_config['server_port']) : '';
	$script_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['script_path']));
	$script_name = ($script_name == '') ? $script_name : '/' . $script_name;
	$url = preg_replace('#^\/?(.*?)\/?$#', '/\1', trim($url));


#
#-----[ AFTER, ADD ]----------------------------------
#
	$url = str_replace('&', '&', $url);

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Стаж: 20 лет 3 месяца
Откуда: Москва

Сообщение Coagulant »

Этот самый. Естественно, fix для 2.0.4 я не ставил.
Настоятельно рекомендую сделать исправление ошибки 404, на которые я дал ссылку (если еще не сделали).

Оно заключается в закомментировании строчек:

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

$url = preg_replace('#^/?(.*?)/?$#', '/1', trim($url));
и

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

header('Location: ' . $server_protocol . $server_name . $server_port . $script_name . $url);
Аватара пользователя
Rick
phpBB 1.4.2
Сообщения: 63
Стаж: 20 лет 5 месяцев

Сообщение Rick »

Неа... Спасибо, но не работает... поставил мод для исправления ошибки 404... (хотя зачем?)... все равно не работает. :(

P.S. Так не только закомментировать нужно строки, но и добавить пару других.
Аватара пользователя
Jester
phpBB 1.2.0
Сообщения: 12
Стаж: 19 лет 1 месяц
Откуда: Нижний Новгород

Сообщение Jester »

У меня на 2.0.19 этот мод тоже не работает. А жаль... Как же сделать так, чтобы при входе на форум пользователя не выкидывало на главную страницу? Поиском кроме этой темы ничего не нашёл. :(
Аватара пользователя
Kuban
phpBB 1.4.2
Сообщения: 56
Стаж: 19 лет 3 месяца
Откуда: Комсомольск-на-Амуре
Благодарил (а): 8 раз
Поблагодарили: 1 раз

Сообщение Kuban »

Jester
Я на 2.0.19 поставил этот мод, никаких изменений не произошло, продолжал выкидывать на главную, но только выполнил вторую часть мода:

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

# This step is only needed for phpBB 2.0.4
# It's just trying to fix a bug of phpBB 2.0.4, which may affect this mod
#-----[ OPEN ]----------------------------------------
#
includes/funtions.php

#
#-----[ FIND ]----------------------------------------
#
function redirect($url)
{
	global $db, $board_config;

	if (!empty($db))
	{
		$db->sql_close();
	}

	$server_protocol = ($board_config['cookie_secure']) ? 'https://' : 'http://';
	$server_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['server_name']));
	$server_port = ($board_config['server_port'] <> 80) ? ':' . trim($board_config['server_port']) : '';
	$script_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['script_path']));
	$script_name = ($script_name == '') ? $script_name : '/' . $script_name;
	$url = preg_replace('#^\/?(.*?)\/?$#', '/\1', trim($url));


#
#-----[ AFTER, ADD ]----------------------------------
#
	$url = str_replace('&', '&', $url);
как всё правильно заработало. теперь по ссылке можно следовать не залогинившимся, потом - вводить имя и пароль - и мы у цели!!!
Аватара пользователя
Jester
phpBB 1.2.0
Сообщения: 12
Стаж: 19 лет 1 месяц
Откуда: Нижний Новгород

Сообщение Jester »

Kuban
За помощь спасибо. Но выполнил я этот код ещё при первой установке — не помогло. И отдельно пробовал (без первой части мода), результат тот же. Правда, в моём functions.php эта часть кода имеет небольшую добавку:

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

function redirect($url)
{
	global $db, $board_config;

	if (!empty($db))
	{
		$db->sql_close();
	}

	if (strstr(urldecode($url), "\n") || strstr(urldecode($url), "\r"))
	{
		message_die(GENERAL_ERROR, 'Tried to redirect to potentially insecure url.');
	}

	$server_protocol = ($board_config['cookie_secure']) ? 'https://' : 'http://';
	$server_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['server_name']));
	$server_port = ($board_config['server_port'] <> 80) ? ':' . trim($board_config['server_port']) : '';
	$script_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['script_path']));
	$script_name = ($script_name == '') ? $script_name : '/' . $script_name;
Могло это повлиять, не подскажете?
Аватара пользователя
edgar
phpBB 2.0.13
Сообщения: 917
Стаж: 19 лет 9 месяцев
Откуда: с Луны свалил...

Сообщение edgar »

Rick писал(а): MOD Version: 1.0.1
А эта версия дырявая.
Rick писал(а):Мод находится тут: http://smartor.is-root.com/viewtopic.php?t=2716
Тут версия 1.0.2

Очень нужный мод. Жаль, что глючный. Попробую установить
Аватара пользователя
Jester
phpBB 1.2.0
Сообщения: 12
Стаж: 19 лет 1 месяц
Откуда: Нижний Новгород

Сообщение Jester »

edgar, я, кстати, 1.0.2 ставил. Не заработал этот мод. :(
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 20 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

у меня стоит и работает с 2.0.16 что ли.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
Jester
phpBB 1.2.0
Сообщения: 12
Стаж: 19 лет 1 месяц
Откуда: Нижний Новгород

Сообщение Jester »

VVVas
Видимо тут кому как повезёт. :wink: К тому же Вы — спец. А я вот пока с php довольно по-плебейски. :(
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 20 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

Jester писал(а):К тому же Вы — спец. А я вот пока с php довольно по-плебейски.
Ага, владею методом копипаста в совершенстве, остальными знаниями не обладаю.
я люблю daft punk | новый sugoi.ru
Ice of Heart
phpBB 1.0.0
Сообщения: 3
Стаж: 19 лет
Откуда: Moscov

Сообщение Ice of Heart »

Народ помогите коли можете.. как говриться...

сайт http://honors.ru форма для входа вверху в шапке.

но я хотел бы что бы после захода просто там появилась типа надпись типа "Username выйти" вот при ентом когда я нажимаю в меня слева на форум я попадал залогенненным!

как это примерно можно простейшим способом реалезовать...
Власть и Закон! Администратор и Модератор!
Аватара пользователя
edgar
phpBB 2.0.13
Сообщения: 917
Стаж: 19 лет 9 месяцев
Откуда: с Луны свалил...

Сообщение edgar »

Странно, всё отлично у меня работает на 2.0.19
Сделал изменения только в page_header

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