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

MOD Last Visit

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

MOD Last Visit

Сообщение YarNET »

last_visit_1.2.8em - этот мод меня не устраивает, там слишком много того, что мне вовсе не нужно. Реализацию отображения кто был на форуме за последние 24 часа сделаю с помощью Users of the day.

Мне нужно отображение последнего посещения пользователя, которое можно будет посмотреть в memberlist и в viewprofile.
Проверь, за что ты платишь деньги провайдеру?
Тестирование скорости соединения с INNTERNET
Аватара пользователя
The-eBook
phpBB 2.0.0
Сообщения: 230
Стаж: 19 лет 4 месяца
Откуда: Москва

Сообщение The-eBook »

YarNET, так у тебя есть MOD USER LIST, отсортируй по последнему визиту и смотри. Зачем тебе отдельно такой MOD?
The-eBook
Проект электронных книг
www.the-ebook.org
Аватара пользователя
YarNET
phpBB 2.0.6
Сообщения: 518
Стаж: 19 лет 5 месяцев

Сообщение YarNET »

Да мне не для себя ведь, а пользователям, чтобы они могли смотреть кто и когда был.
Сейчас у меня эта бяка last_visit_1.2.8em, но в новой версии форума, которая почти готова, этот мод не будет установлен. Он слишком много всего редактировать предполагает, т.е. он слишком неоправданно сложен, для вывода уже имеющейся служебной информации о последнем посещении.
Проверь, за что ты платишь деньги провайдеру?
Тестирование скорости соединения с INNTERNET
Аватара пользователя
The-eBook
phpBB 2.0.0
Сообщения: 230
Стаж: 19 лет 4 месяца
Откуда: Москва

Сообщение The-eBook »

YarNET, а пользователям зачем? Они что шпионы?
The-eBook
Проект электронных книг
www.the-ebook.org
Аватара пользователя
YarNET
phpBB 2.0.6
Сообщения: 518
Стаж: 19 лет 5 месяцев

Сообщение YarNET »

The-eBook, а удобно, всегда можно посмотреть, когда последний раз был интересный человек, например, или что-то в этом роде. Практически, это требование №1 со стороны пользователей. В принципе, это всего лишь увеличение функциональности.
Last Visit, Users of the day и Online/Offline/Hidden Mod и все. Новый форум будет готов. Останется его только «зверски» со своей командой испытать на уязвимости, ошибки, и пр. и можно будет выпускать его в свет.
А так, так пользователям важны лишь те модификации, которые они «потрогать» могут. Визуализация разная. Даже мигающая картинка, когда ЛС приходит вызывает у многих чувство удовлетворенности, так чего уж говорить о «примочках, которые пользователю дают возможности побыть агентом 007. :D

Добавлено спустя 1 минуту 2 секунды:

The-eBook
Будет желание потестировать форум, заходи под никнаймом demo с паролем demo (demo/demo)
Проверь, за что ты платишь деньги провайдеру?
Тестирование скорости соединения с INNTERNET
Аватара пользователя
The-eBook
phpBB 2.0.0
Сообщения: 230
Стаж: 19 лет 4 месяца
Откуда: Москва

Сообщение The-eBook »

YarNET, то как реализовано подобное мне не нравится. Я долго работал с японцами, а у них психология – "если поставил точку, она должна иметь оправдание или смысл". Поэтому лишние детали усложняют считывание информации с экрана. Я бы предпочел, чтобы подобное было отдельной страницей для всех страждующих, например вот здесь у тебя: http://forum.yarnet.ru/viewonline.php, сюда можно попасть, если щелкнуть на линке внизу форума – "Кто сейчас на форуме"
The-eBook
Проект электронных книг
www.the-ebook.org
Аватара пользователя
YarNET
phpBB 2.0.6
Сообщения: 518
Стаж: 19 лет 5 месяцев

Сообщение YarNET »

Логично конечно, но это для тех так, кто на форумах присутствует только для решения каких-либо вопросов, но не для развлечения/общения, отдыха. Для делового человека важна информация и удобство ее получения, на все остальное ему нет дела. А для другой категории пользователей, посещающих форум, как «развлекательно-информационный ресурс» на первом месте комфорт, удобство, ощущение различных «штучек», которые можно «потрогать».
У нас два форума: один развлекательно-информационный, другой – техническая поддержка клиентов (мультисервисный оператор связи). Второй форум исключительно без «примочек», только самое необходимое, облегчающее работу.
Проверь, за что ты платишь деньги провайдеру?
Тестирование скорости соединения с INNTERNET
Аватара пользователя
YarNET
phpBB 2.0.6
Сообщения: 518
Стаж: 19 лет 5 месяцев

Сообщение YarNET »

Инструкция просто дрянь :twisted: Этот last_visit_1.2.8em сплошной ужас. Один из самых важных файлов sessions.php с такой тупой инструкцией.

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

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

# 
#-----[ FIND ]------------------------------------------------ 
#
if (
{// (
$last_visit = (

$sql = "UPDATE " . USERS_TABLE . " 
SET

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 
if

# 
#-----[ IN-LINE BEFORE, ADD ]--------------------------------- 
# 
//

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 
{

# 
#-----[ IN-LINE BEFORE, ADD ]--------------------------------- 
# 
//

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 
user_lastvisit = $last_visit

# 
#-----[ IN-LINE AFTER, ADD ]---------------------------------- 
#
, user_lastlogon = " . time() .  ", user_totallogon=user_totallogon+1

# 
#-----[ FIND ]------------------------------------------------ 
# 
$sessiondata['userid'] = $user_id;
}

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 
}

# 
#-----[ IN-LINE BEFORE, ADD ]--------------------------------- 
# 
//

# 
#-----[ FIND ]------------------------------------------------ 
# 
if ( !empty($session_id) )
{

# 
#-----[ AFTER, ADD ]------------------------------------------ 
#

// Start add - Last visit MOD
$expiry_time = $current_time - $board_config['session_length'] ;
// End add - Last visit MOD

# 
#-----[ FIND ]------------------------------------------------ 
# 
$sql = "SELECT u.*, s.*
FROM
WHERE
AND

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 
";

# 
#-----[ IN-LINE BEFORE, ADD ]--------------------------------- 
# 
 AND session_time > $expiry_time

# 
#-----[ FIND ]------------------------------------------------ 
# 
if ( $userdata['user_id'] != ANONYMOUS )
{
$sql =
SET

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 
if

# 
#-----[ IN-LINE BEFORE, ADD ]--------------------------------- 
# 
//

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 
{

# 
#-----[ IN-LINE BEFORE, ADD ]--------------------------------- 
# 
//

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 
$thispage_id

# 
#-----[ IN-LINE AFTER, ADD ]---------------------------------- 
# 
, user_totalpages = user_totalpages+1, user_totaltime = user_totaltime+($current_time-".$userdata['session_time'].")

# 
#-----[ FIND ]------------------------------------------------ 
# 
}

//
// Delete expired sessions

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
#
}

# 
#-----[ IN-LINE BEFORE, ADD ]--------------------------------- 
# 
//

# 
#-----[ FIND ]------------------------------------------------ 
# 
WHERE session_time < $expiry_time

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 
session_time < $expiry_time

# 
#-----[ IN-LINE REPLACE WITH ]-------------------------------- 
# 
UNIX_TIMESTAMP() - session_time >=172800

# 


Добавлено спустя 1 минуту 3 секунды:

Неужели какого-нибудь другого last_visit нет?
Проверь, за что ты платишь деньги провайдеру?
Тестирование скорости соединения с INNTERNET
Аватара пользователя
crash
Former team member
Сообщения: 6517
Стаж: 19 лет 9 месяцев
Откуда: Бердск

Сообщение crash »

YarNET
а что не нравится в описании?
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
Аватара пользователя
Vladson
Former team member
Сообщения: 816
Стаж: 19 лет 11 месяцев
Откуда: Estonia, Tallinn

Сообщение Vladson »

Хорошего в том что EasyMod его поймёт, а вот плохое в том что человек точно запарится :D
Серый цвет - светлый (светлее чёрного), но он и тёмный (темнее белого), он же промежуточный (между чёрным и белым). Теорию относительности никто не отменял. Истина в целом - понятие виртуально-ситуативное.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Есть еще пара подобных модов.

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

##   Hack Title:   Add Last User Visit Date to Members List
##                 (A phpBB2 Quickie)
##   Author:       Nivisec (support@nivisec.com)
##                 http://www.nivisec.com

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

# Title: Add Last User Visit Date to User Profiles
# Author: Thoul  thoul@users.sourceforge.net  http://darkmods.sourceforge.net
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
YarNET
phpBB 2.0.6
Сообщения: 518
Стаж: 19 лет 5 месяцев

Сообщение YarNET »

crash
а что не нравится в описании?
Особенно первая половина мне нравится :D
Дело в том, что он у меня есть на работающем форуме, но т.к. я сейчас новый форум собрал на 90% в котором точно не должно быть этого мода, я и хотел найти ему функциональную замену.
Много разных модов устанавлявал, но во всех инструкции были приличные, качественно написанные, а это убожество.
Еще нельзя будет пользователям смотреть список всех зарегистрированных по дате регистрации, т.к. она будет доступна только администратору.
Безобразный мод, чесно слово :idea: :roll:

Добавлено спустя 44 секунды:

Неоправданно сложный и тяжелый.

Добавлено спустя 20 минут 50 секунд:

Была не была.....буду ставить last_visit_1.2.8em и пусть мне будет плохо :twisted:

Добавлено спустя 1 час 20 минут 41 секунду:

Так как самым сложным моментом при установке этого мода является работа с файлом sessions.php, то публикую уже модернизированный файл целиком.
Внимание!!! Данный sessions.php можно применять только в том случаи, если до этого у вас на форуме он был без модификаций. В противном случаи модификацию проводите вручную.
----------------

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

sessions.php
модифицирован при помощи easymod-0-1-13

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

<?php
/***************************************************************************
 *                                sessions.php
 *                            -------------------
 *   begin                : Saturday, Feb 13, 2001
 *   copyright            : (C) 2001 The phpBB Group
 *   email                : support@phpbb.com
 *
 *   $Id: sessions.php,v 1.58.2.11 2004/07/11 16:46:19 acydburn Exp $
 *
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

//
// Adds/updates a new session to the database for the given userid.
// Returns the new session ID on success.
//
function session_begin($user_id, $user_ip, $page_id, $auto_create = 0, $enable_autologin = 0)
{
	global $db, $board_config;
	global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;

	$cookiename = $board_config['cookie_name'];
	$cookiepath = $board_config['cookie_path'];
	$cookiedomain = $board_config['cookie_domain'];
	$cookiesecure = $board_config['cookie_secure'];

	if ( isset($HTTP_COOKIE_VARS[$cookiename . '_sid']) || isset($HTTP_COOKIE_VARS[$cookiename . '_data']) )
	{
		$session_id = isset($HTTP_COOKIE_VARS[$cookiename . '_sid']) ? $HTTP_COOKIE_VARS[$cookiename . '_sid'] : '';
		$sessiondata = isset($HTTP_COOKIE_VARS[$cookiename . '_data']) ? unserialize(stripslashes($HTTP_COOKIE_VARS[$cookiename . '_data'])) : array();
		$sessionmethod = SESSION_METHOD_COOKIE;
	}
	else
	{
		$sessiondata = array();
		$session_id = ( isset($HTTP_GET_VARS['sid']) ) ? $HTTP_GET_VARS['sid'] : '';
		$sessionmethod = SESSION_METHOD_GET;
	}

	//
	if (!preg_match('/^[A-Za-z0-9]*$/', $session_id)) 
	{
		$session_id = '';
	}

	$last_visit = 0;
	$current_time = time();
	$expiry_time = $current_time - $board_config['session_length'];

	//
	// Try and pull the last time stored in a cookie, if it exists
	//
	$sql = "SELECT * 
		FROM " . USERS_TABLE . " 
		WHERE user_id = $user_id";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(CRITICAL_ERROR, 'Could not obtain lastvisit data from user table', '', __LINE__, __FILE__, $sql);
	}

	$userdata = $db->sql_fetchrow($result);

	if ( $user_id != ANONYMOUS )
	{
		$auto_login_key = $userdata['user_password'];

		if ( $auto_create )
		{
			if ( isset($sessiondata['autologinid']) && $userdata['user_active'] )
			{
				// We have to login automagically
				if( $sessiondata['autologinid'] == $auto_login_key )
				{
					// autologinid matches password
					$login = 1;
					$enable_autologin = 1;
				}
				else
				{
					// No match; don't login, set as anonymous user
					$login = 0; 
					$enable_autologin = 0; 
					$user_id = $userdata['user_id'] = ANONYMOUS;
				}
			}
			else
			{
				// Autologin is not set. Don't login, set as anonymous user
				$login = 0;
				$enable_autologin = 0;
				$user_id = $userdata['user_id'] = ANONYMOUS;
			}
		}
		else
		{
			$login = 1;
		}
	}
	else
	{
		$login = 0;
		$enable_autologin = 0;
	}

	//
	// Initial ban check against user id, IP and email address
	//
	preg_match('/(..)(..)(..)(..)/', $user_ip, $user_ip_parts);

	$sql = "SELECT ban_ip, ban_userid, ban_email 
		FROM " . BANLIST_TABLE . " 
		WHERE ban_ip IN ('" . $user_ip_parts[1] . $user_ip_parts[2] . $user_ip_parts[3] . $user_ip_parts[4] . "', '" . $user_ip_parts[1] . $user_ip_parts[2] . $user_ip_parts[3] . "ff', '" . $user_ip_parts[1] . $user_ip_parts[2] . "ffff', '" . $user_ip_parts[1] . "ffffff')
			OR ban_userid = $user_id";
	if ( $user_id != ANONYMOUS )
	{
		$sql .= " OR ban_email LIKE '" . str_replace("\'", "''", $userdata['user_email']) . "' 
			OR ban_email LIKE '" . substr(str_replace("\'", "''", $userdata['user_email']), strpos(str_replace("\'", "''", $userdata['user_email']), "@")) . "'";
	}
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(CRITICAL_ERROR, 'Could not obtain ban information', '', __LINE__, __FILE__, $sql);
	}

	if ( $ban_info = $db->sql_fetchrow($result) )
	{
		if ( $ban_info['ban_ip'] || $ban_info['ban_userid'] || $ban_info['ban_email'] )
		{
			message_die(CRITICAL_MESSAGE, 'You_been_banned');
		}
	}

	//
	// Create or update the session
	//
	$sql = "UPDATE " . SESSIONS_TABLE . "
		SET session_user_id = $user_id, session_start = $current_time, session_time = $current_time, session_page = $page_id, session_logged_in = $login
		WHERE session_id = '" . $session_id . "' 
			AND session_ip = '$user_ip'";
	if ( !$db->sql_query($sql) || !$db->sql_affectedrows() )
	{
		$session_id = md5(uniqid($user_ip));

		$sql = "INSERT INTO " . SESSIONS_TABLE . "
			(session_id, session_user_id, session_start, session_time, session_ip, session_page, session_logged_in)
			VALUES ('$session_id', $user_id, $current_time, $current_time, '$user_ip', $page_id, $login)";
		if ( !$db->sql_query($sql) )
		{
			message_die(CRITICAL_ERROR, 'Error creating new session', '', __LINE__, __FILE__, $sql);
		}
	}

	//if ( $user_id != ANONYMOUS )
	//{// ( $userdata['user_session_time'] > $expiry_time && $auto_create ) ? $userdata['user_lastvisit'] : ( 
		$last_visit = ( $userdata['user_session_time'] > 0 ) ? $userdata['user_session_time'] : $current_time; 

		$sql = "UPDATE " . USERS_TABLE . " 

			SET user_session_time = $current_time, user_session_page = $page_id, user_lastvisit = $last_visit, user_lastlogon = " . time() .  ", user_totallogon=user_totallogon+1

			WHERE user_id = $user_id";
		if ( !$db->sql_query($sql) )
		{
			message_die(CRITICAL_ERROR, 'Error updating last visit time', '', __LINE__, __FILE__, $sql);
		}

		$userdata['user_lastvisit'] = $last_visit;

		$sessiondata['autologinid'] = ( $enable_autologin && $sessionmethod == SESSION_METHOD_COOKIE ) ? $auto_login_key : '';
		$sessiondata['userid'] = $user_id;

	//}

	$userdata['session_id'] = $session_id;
	$userdata['session_ip'] = $user_ip;
	$userdata['session_user_id'] = $user_id;
	$userdata['session_logged_in'] = $login;
	$userdata['session_page'] = $page_id;
	$userdata['session_start'] = $current_time;
	$userdata['session_time'] = $current_time;

	setcookie($cookiename . '_data', serialize($sessiondata), $current_time + 31536000, $cookiepath, $cookiedomain, $cookiesecure);
	setcookie($cookiename . '_sid', $session_id, 0, $cookiepath, $cookiedomain, $cookiesecure);

	$SID = 'sid=' . $session_id;

	return $userdata;
}

//
// Checks for a given user session, tidies session table and updates user
// sessions at each page refresh
//
function session_pagestart($user_ip, $thispage_id)
{
	global $db, $lang, $board_config;
	global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;

	$cookiename = $board_config['cookie_name'];
	$cookiepath = $board_config['cookie_path'];
	$cookiedomain = $board_config['cookie_domain'];
	$cookiesecure = $board_config['cookie_secure'];

	$current_time = time();
	unset($userdata);

	if ( isset($HTTP_COOKIE_VARS[$cookiename . '_sid']) || isset($HTTP_COOKIE_VARS[$cookiename . '_data']) )
	{
		$sessiondata = isset( $HTTP_COOKIE_VARS[$cookiename . '_data'] ) ? unserialize(stripslashes($HTTP_COOKIE_VARS[$cookiename . '_data'])) : array();
		$session_id = isset( $HTTP_COOKIE_VARS[$cookiename . '_sid'] ) ? $HTTP_COOKIE_VARS[$cookiename . '_sid'] : '';
		$sessionmethod = SESSION_METHOD_COOKIE;
	}
	else
	{
		$sessiondata = array();
		$session_id = ( isset($HTTP_GET_VARS['sid']) ) ? $HTTP_GET_VARS['sid'] : '';
		$sessionmethod = SESSION_METHOD_GET;
	}

	// 
	if (!preg_match('/^[A-Za-z0-9]*$/', $session_id))
	{
		$session_id = '';
	}

	//
	// Does a session exist?
	//
	if ( !empty($session_id) )
	{

// Start add - Last visit MOD
$expiry_time = $current_time - $board_config['session_length'] ;
// End add - Last visit MOD


		//
		// session_id exists so go ahead and attempt to grab all
		// data in preparation
		//
		$sql = "SELECT u.*, s.*
			FROM " . SESSIONS_TABLE . " s, " . USERS_TABLE . " u
			WHERE s.session_id = '$session_id'

				AND u.user_id = s.session_user_id AND session_time > $expiry_time";

		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(CRITICAL_ERROR, 'Error doing DB query userdata row fetch', '', __LINE__, __FILE__, $sql);
		}

		$userdata = $db->sql_fetchrow($result);

		//
		// Did the session exist in the DB?
		//
		if ( isset($userdata['user_id']) )
		{
			//
			// Do not check IP assuming equivalence, if IPv4 we'll check only first 24
			// bits ... I've been told (by vHiker) this should alleviate problems with 
			// load balanced et al proxies while retaining some reliance on IP security.
			//
			$ip_check_s = substr($userdata['session_ip'], 0, 6);
			$ip_check_u = substr($user_ip, 0, 6);

			if ($ip_check_s == $ip_check_u)
			{
				$SID = ($sessionmethod == SESSION_METHOD_GET || defined('IN_ADMIN')) ? 'sid=' . $session_id : '';

				//
				// Only update session DB a minute or so after last update
				//
				if ( $current_time - $userdata['session_time'] > 60 )
				{
					$sql = "UPDATE " . SESSIONS_TABLE . " 
						SET session_time = $current_time, session_page = $thispage_id 
						WHERE session_id = '" . $userdata['session_id'] . "'";
					if ( !$db->sql_query($sql) )
					{
						message_die(CRITICAL_ERROR, 'Error updating sessions table', '', __LINE__, __FILE__, $sql);
					}

					//if ( $userdata['user_id'] != ANONYMOUS )
					//{
						$sql = "UPDATE " . USERS_TABLE . " 

							SET user_session_time = $current_time, user_session_page = $thispage_id, user_totalpages = user_totalpages+1, user_totaltime = user_totaltime+($current_time-".$userdata['session_time'].") 

							WHERE user_id = " . $userdata['user_id'];
						if ( !$db->sql_query($sql) )
						{
							message_die(CRITICAL_ERROR, 'Error updating sessions table', '', __LINE__, __FILE__, $sql);
						}

					//}

					//
					// Delete expired sessions

					//
					$expiry_time = $current_time - $board_config['session_length'];
					$sql = "DELETE FROM " . SESSIONS_TABLE . " 

						WHERE UNIX_TIMESTAMP() - session_time >=172800 

							AND session_id <> '$session_id'";
					if ( !$db->sql_query($sql) )
					{
						message_die(CRITICAL_ERROR, 'Error clearing sessions table', '', __LINE__, __FILE__, $sql);
					}

					setcookie($cookiename . '_data', serialize($sessiondata), $current_time + 31536000, $cookiepath, $cookiedomain, $cookiesecure);
					setcookie($cookiename . '_sid', $session_id, 0, $cookiepath, $cookiedomain, $cookiesecure);
				}

				return $userdata;
			}
		}
	}

	//
	// If we reach here then no (valid) session exists. So we'll create a new one,
	// using the cookie user_id if available to pull basic user prefs.
	//
	$user_id = ( isset($sessiondata['userid']) ) ? intval($sessiondata['userid']) : ANONYMOUS;

	if ( !($userdata = session_begin($user_id, $user_ip, $thispage_id, TRUE)) )
	{
		message_die(CRITICAL_ERROR, 'Error creating user session', '', __LINE__, __FILE__, $sql);
	}

	return $userdata;

}

//
// session_end closes out a session
// deleting the corresponding entry
// in the sessions table
//
function session_end($session_id, $user_id)
{
	global $db, $lang, $board_config;
	global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;

	$cookiename = $board_config['cookie_name'];
	$cookiepath = $board_config['cookie_path'];
	$cookiedomain = $board_config['cookie_domain'];
	$cookiesecure = $board_config['cookie_secure'];

	$current_time = time();

	//
	// Pull cookiedata or grab the URI propagated sid
	//
	if ( isset($HTTP_COOKIE_VARS[$cookiename . '_sid']) )
	{
		$session_id = isset( $HTTP_COOKIE_VARS[$cookiename . '_sid'] ) ? $HTTP_COOKIE_VARS[$cookiename . '_sid'] : '';
		$sessionmethod = SESSION_METHOD_COOKIE;
	}
	else
	{
		$session_id = ( isset($HTTP_GET_VARS['sid']) ) ? $HTTP_GET_VARS['sid'] : '';
		$sessionmethod = SESSION_METHOD_GET;
	}

	if (!preg_match('/^[A-Za-z0-9]*$/', $session_id))
	{
		return;
	}
	
	//
	// Delete existing session
	//
	$sql = "DELETE FROM " . SESSIONS_TABLE . " 
		WHERE session_id = '$session_id' 
			AND session_user_id = $user_id";
	if ( !$db->sql_query($sql) )
	{
		message_die(CRITICAL_ERROR, 'Error removing user session', '', __LINE__, __FILE__, $sql);
	}

	setcookie($cookiename . '_data', '', $current_time - 31536000, $cookiepath, $cookiedomain, $cookiesecure);
	setcookie($cookiename . '_sid', '', $current_time - 31536000, $cookiepath, $cookiedomain, $cookiesecure);

	return true;
}

//
// Append $SID to a url. Borrowed from phplib and modified. This is an
// extra routine utilised by the session code above and acts as a wrapper
// around every single URL and form action. If you replace the session
// code you must include this routine, even if it's empty.
//
function append_sid($url, $non_html_amp = false)
{
	global $SID;

	if ( !empty($SID) && !preg_match('#sid=#', $url) )
	{
		$url .= ( ( strpos($url, '?') != false ) ?  ( ( $non_html_amp ) ? '&' : '&' ) : '?' ) . $SID;
	}

	return $url;
}

?>
Проверь, за что ты платишь деньги провайдеру?
Тестирование скорости соединения с INNTERNET
Аватара пользователя
Dmitrij
phpBB 1.4.3
Сообщения: 77
Стаж: 19 лет 10 месяцев
Откуда: Москва

Сообщение Dmitrij »

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

 
Couldn't retrieve user today data

DEBUG MODE

SQL Error : 1054 Unknown column 'user_lastlogon' in 'field list'

SELECT user_id,username,user_allow_viewonline,user_level,user_lastlogon FROM phpbb_users WHERE user_id!="-1" AND user_session_time >= 1105390800 AND user_session_time< 1105477199 ORDER BY username

Line : 303
File : /www/vhosts/hobbyclub.ru/html/index.php 
После установки этого мода, форум перестал работать, и появилась вот такая ошибка.
С уважением, Дмитрий.
Аватара пользователя
YarNET
phpBB 2.0.6
Сообщения: 518
Стаж: 19 лет 5 месяцев

Сообщение YarNET »

Dmitrij
Путь к ошибке указан:

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

Line : 303 
File : /www/vhosts/hobbyclub.ru/html/index.php
Базу данных скриптом обновили?
Проверь, за что ты платишь деньги провайдеру?
Тестирование скорости соединения с INNTERNET
Аватара пользователя
YarNET
phpBB 2.0.6
Сообщения: 518
Стаж: 19 лет 5 месяцев

Сообщение YarNET »

Фиг знает, недавно разрешил большое количество подключений и сессий – как результат, получил за один день (не за сутки) более 2000 тыс записей в таблице сессий. Все сессии практически от незарегистрированных пользователей/поисковиков.
Дело в том, что такое накопление идет благодаря моду last_visit_1.2.8em. Я не знаю, быть может я не верно модифицировал файл sessions.php… Кто-нибудь использует этот мод? Если да, то как с таблицей сессий дела обстоят? Идет такое колоссальное накопление записей в таблице или нет?
Проверь, за что ты платишь деньги провайдеру?
Тестирование скорости соединения с INNTERNET

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