Funderingar runt uppgradering från 2.0.13 till 2.0.18

Detta är ett arkiv för phpBB2 Support, Diskussion, MODar, Stilar och översättningar. Den tillhandahålls endast för referensändamål.

Moderatorer: Moderatorgrupp, Supportgrupp

Användarens profilbild
WickeD
Extra aktiv medlem
Extra aktiv medlem
Inlägg: 979
Blev medlem: 2004-11-08 12:17
Svar: 0

Inlägg av WickeD »

Jag har sett ett problem på min sida som jag inte vet hur jag ska fel söka eller få till.

Längst ned på startsidan på höger sida finns en Box som har rubriken "Senaste besökarna" och i den visas det hur många användare det har varit under dagen, men den verkar börja om från noll eller att den går tillbaks i räkning.

Jag var in för någon timme sedan och då stod det att det hade varit in 15st användare i dag, och nu står det att det har varit 11st inne i dag, något fel är det. Men va kan vara fel som ställer till detta?

Har du någon ide Holger?
Bästa hälsningar - Mikael Andersson

Välkommen till: http://www.bikersite.se - Träffpunkten för svenska bikers!
dallas
Extra aktiv medlem
Extra aktiv medlem
Inlägg: 196
Blev medlem: 2005-09-03 23:07
Svar: 0

Inlägg av dallas »

ursäkta att jag fortsätter i din tråd WickeD
Problemet med koden som du har där dallas är att man även kan ändra språket via URLen. Om nu någon tycker sig vara så smart och gör det så får denne kanske en rad felmeddelanden ... och kanske får skylla sig själv, men fint är det inte ...
_________________
Holger Gremminger - phpBB Sverige Support
då fick man lära sig något nytt..
kan man ändra mer på det viset?
(jag har nämligen i profilen tagit bort ett par alternativ till
genom att kommentera bort raderna)

om man bara kopierar över dom svenska
lang_swedish/*.php till lang_english/*.php
vad händer då?

dallas
Användarens profilbild
Holger
Support - Ledare
Support - Ledare
Inlägg: 6573
Blev medlem: 2004-06-09 09:32
Svar: 1

Inlägg av Holger »

Det är inget problem att fortsätta tråden. Jag kanske särar trådarna om det blir helt annat tema.

Då har du svenskt språk med inställningen "English" i språkvalet. Detta eftersom filerna ju heter lika i alla språk. Även lang-VARIABLERNA heter ju lika. Det är bara texten som variablerna "tar med sig" som ändrar sig.

Du kan säkerligen ändra en hel del genom URLen.
Det hela börjar ju med helt grundläggande saker som ?t=123 (topic 123) eller ?f=123 (forum 123) eller c=123 (kategori 123).

Med ?lang=abc ska det vara möjligt att ställa om språket.
Jag vet inte om denna möjlighet blockeras på något sätt i nyare versioner.

Det där med inställningarna i profilen kan man säkerligen också ställa in via URL. Men det kanske någon annan kan svara på, jag vet inte så exakt!
Holger Gremminger
Ingen support via PM!
dallas
Extra aktiv medlem
Extra aktiv medlem
Inlägg: 196
Blev medlem: 2005-09-03 23:07
Svar: 0

Inlägg av dallas »

jo det förstår jag att det blir svenskt språk om man lägger in dom svenska filerna i lang_eng mappen, men funktionen på forumet kan väl inte påverkas som du skriver i och med att det bara är själva "språktexten" som är olika.
Du kan säkerligen ändra en hel del genom URLen.
Det hela börjar ju med helt grundläggande saker som ?t=123 (topic 123) eller ?f=123 (forum 123) eller c=123 (kategori 123).
sådana ändringar är ju lätta men att ändra i databasen är väl inte "lika lätt" även om jag bara kommenterat bort vissa rader (språkvalet)

dallas
Användarens profilbild
Holger
Support - Ledare
Support - Ledare
Inlägg: 6573
Blev medlem: 2004-06-09 09:32
Svar: 1

Inlägg av Holger »

Vad jag egentligen menar är:
Om det är MÖJLIGT att göra en viss ändring via URL, så hjälper det inte att kommentera bort koden ...

Men om vi ska vara ärliga: det spelar inte så stor roll. Användare som inte ser en option kommer inte att fundera på om den BÖr finnas eller ej ... den är helt enkelt inte där ...
Holger Gremminger
Ingen support via PM!
Användarens profilbild
WickeD
Extra aktiv medlem
Extra aktiv medlem
Inlägg: 979
Blev medlem: 2004-11-08 12:17
Svar: 0

Inlägg av WickeD »

Vad tror du om detta problem Holger?


WickeD skrev:Jag har sett ett problem på min sida som jag inte vet hur jag ska fel söka eller få till.

Längst ned på startsidan på höger sida finns en Box som har rubriken "Senaste besökarna" och i den visas det hur många användare det har varit under dagen, men den verkar börja om från noll eller att den går tillbaks i räkning.

Jag var in för någon timme sedan och då stod det att det hade varit in 15st användare i dag, och nu står det att det har varit 11st inne i dag, något fel är det. Men va kan vara fel som ställer till detta?

Har du någon ide Holger?
Bästa hälsningar - Mikael Andersson

Välkommen till: http://www.bikersite.se - Träffpunkten för svenska bikers!
dallas
Extra aktiv medlem
Extra aktiv medlem
Inlägg: 196
Blev medlem: 2005-09-03 23:07
Svar: 0

Inlägg av dallas »

Jag tog nu bort hela mappen lang_english

Vet du om på något sett det kommer att ställa till med problem Holger?

Jag vill att användarna bara ska kunna använda lang_swedish
det måste ju gå bra att ta bort hela den mappen så finns ju inget att välja på..
jag gjorde det nyss

gick dessutom först igenom språkfilerna eng o swe och jämförde
(öppnade dom i två fönster bredvid varandra) det tog inte så lång tid..

dom är ju helt identiska
(hittade dock ett par senare tillägg i den engelska) som jag då förde över till den svenska.

dallas
MN
Gammal medlem
Gammal medlem
Inlägg: 76
Blev medlem: 2005-06-04 13:06
Svar: 0

Inlägg av MN »

WickeD skrev:Jag har sett ett problem på min sida som jag inte vet hur jag ska fel söka eller få till.

Längst ned på startsidan på höger sida finns en Box som har rubriken "Senaste besökarna" och i den visas det hur många användare det har varit under dagen, men den verkar börja om från noll eller att den går tillbaks i räkning.

Jag var in för någon timme sedan och då stod det att det hade varit in 15st användare i dag, och nu står det att det har varit 11st inne i dag, något fel är det. Men va kan vara fel som ställer till detta?
Har själv hållit på att krångla med denna modd nu i dagarna. Då blev det också så för mig när jag uppdaterade dels till den senaste versionen på forumet, men också när jag skulle rätta till några fel som smugit sig in i modden. Men nästa dag verkade problemet vara löst, eftersom det är en ny dag och den börjar om att räkna från 0 klockan 00:00. Så det är nog inget att oroa sig för.

/MN
Life is what happens to you while you're busy making other plans - John Lennon
Användarens profilbild
WickeD
Extra aktiv medlem
Extra aktiv medlem
Inlägg: 979
Blev medlem: 2004-11-08 12:17
Svar: 0

Inlägg av WickeD »

OK, då väntar jag till imorgon med att börja gräva i detta problem

Tack MN!
Bästa hälsningar - Mikael Andersson

Välkommen till: http://www.bikersite.se - Träffpunkten för svenska bikers!
Användarens profilbild
Holger
Support - Ledare
Support - Ledare
Inlägg: 6573
Blev medlem: 2004-06-09 09:32
Svar: 1

Inlägg av Holger »

Löste det sig?
Holger Gremminger
Ingen support via PM!
Användarens profilbild
WickeD
Extra aktiv medlem
Extra aktiv medlem
Inlägg: 979
Blev medlem: 2004-11-08 12:17
Svar: 0

Inlägg av WickeD »

Jag ska kolla under dagen vad som händer med räknaren.
Bästa hälsningar - Mikael Andersson

Välkommen till: http://www.bikersite.se - Träffpunkten för svenska bikers!
Användarens profilbild
Holger
Support - Ledare
Support - Ledare
Inlägg: 6573
Blev medlem: 2004-06-09 09:32
Svar: 1

Inlägg av Holger »

ok ...
Holger Gremminger
Ingen support via PM!
Användarens profilbild
WickeD
Extra aktiv medlem
Extra aktiv medlem
Inlägg: 979
Blev medlem: 2004-11-08 12:17
Svar: 0

Inlägg av WickeD »

Nu har jag kollat några gånger under dagen, och den går inte över 30st besökare fören den går tillbaks till ca 11st eller 12st besökare.

Något är riktigt fel, men vart kan det var tro?

Har du Holger någon aning?

Skulle verkligen uppskatta hjälp med detta, för risken är ju att det är något annat som också är berört av detta fel.
Bästa hälsningar - Mikael Andersson

Välkommen till: http://www.bikersite.se - Träffpunkten för svenska bikers!
Användarens profilbild
Holger
Support - Ledare
Support - Ledare
Inlägg: 6573
Blev medlem: 2004-06-09 09:32
Svar: 1

Inlägg av Holger »

Tyvärr, jag kan bara hänvisa till http://mods.db9.dk
Men jag ska även ta och kolla själv där imorron.
Holger Gremminger
Ingen support via PM!
Användarens profilbild
WickeD
Extra aktiv medlem
Extra aktiv medlem
Inlägg: 979
Blev medlem: 2004-11-08 12:17
Svar: 0

Inlägg av WickeD »

Jag gjorde som dom på den sidan föreslog, men då blev det så att jag inte kunde logga in på sidan längre, så jag bytte tillbaks till den gamla koden.

Skumt!

Men har du tid och ork får du gärna prata med dom och höra vad som kan vara fel.

Jag postar koden här nedan om det blir så att du tittar på detta problem.

Kod: Markera allt

<?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.12 2005/02/27 20:33:01 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, $admin = 0)
{
	global $db, $phpbb_root_path,$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();

	//
   // Are auto-logins allowed? 
   // If allow_autologin is not set or is true then they are 
   // (same behaviour as old 2.0.x session code) 
   // 
   if (isset($board_config['allow_autologin']) && !$board_config['allow_autologin']) 
   { 
      $enable_autologin = $sessiondata['autologinid'] = false; 
   } 

   // 
   // First off attempt to join with the autologin value if we have one 
   // If not, just use the user_id value 
   // 
   $userdata = array(); 

   if ($user_id != ANONYMOUS) 
   { 
      if (isset($sessiondata['autologinid']) && (string) $sessiondata['autologinid'] != '' && $user_id) 
      { 
         $sql = 'SELECT u.* 
            FROM ' . USERS_TABLE . ' u, ' . SESSIONS_KEYS_TABLE . ' k 
            WHERE u.user_id = ' . (int) $user_id . " 
               AND u.user_active = 1 
               AND k.user_id = u.user_id 
               AND k.key_id = '" . md5($sessiondata['autologinid']) . "'"; 
         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); 
         $db->sql_freeresult($result); 
       
         $enable_autologin = $login = 1; 
      } 
      else if (!$auto_create) 
      { 
         $sessiondata['autologinid'] = ''; 
         $sessiondata['userid'] = $user_id; 

         $sql = 'SELECT * 
            FROM ' . USERS_TABLE . ' 
            WHERE user_id = ' . (int) $user_id . ' 
               AND user_active = 1'; 
         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); 
         $db->sql_freeresult($result); 

         $login = 1; 
      } 
   } 

   // 
   // At this point either $userdata should be populated or 
   // one of the below is true 
   // * Key didn't match one in the DB 
   // * User does not exist 
   // * User is inactive 
   // 
   if (!sizeof($userdata) || !is_array($userdata) || !$userdata) 
   { 
      $sessiondata['autologinid'] = ''; 
      $sessiondata['userid'] = $user_id = ANONYMOUS; 
      $enable_autologin = $login = 0; 

      $sql = 'SELECT * 
         FROM ' . USERS_TABLE . ' 
         WHERE user_id = ' . (int) $user_id; 
      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); 
      $db->sql_freeresult($result);
	}

	//
	// 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, session_admin = $admin
		WHERE session_id = '" . $session_id . "' 
			AND session_ip = '$user_ip'";
	if ( !$db->sql_query($sql) || !$db->sql_affectedrows() )
	{
      list($sec, $usec) = explode(' ', microtime()); 
      mt_srand((float) $sec + ((float) $usec * 100000)); 
      $session_id = md5(uniqid(mt_rand(), true));

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

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

      if (!$admin) 
      { 
         $sql = "UPDATE " . USERS_TABLE . " 
            SET user_session_time = $current_time, user_session_page = $page_id, user_lastvisit = $last_visit 
            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;

            // 
      // Regenerate the auto-login key 
      // 
      if ($enable_autologin) 
      { 
         list($sec, $usec) = explode(' ', microtime()); 
         mt_srand(hexdec(substr($session_id, 0, 8)) + (float) $sec + ((float) $usec * 1000000)); 
         $auto_login_key = uniqid(mt_rand(), true); 
          
         if (isset($sessiondata['autologinid']) && (string) $sessiondata['autologinid'] != '') 
         { 
            $sql = 'UPDATE ' . SESSIONS_KEYS_TABLE . " 
               SET last_ip = '$user_ip', key_id = '" . md5($auto_login_key) . "', last_login = $current_time 
               WHERE key_id = '" . md5($sessiondata['autologinid']) . "'"; 
         } 
         else 
         { 
            $sql = 'INSERT INTO ' . SESSIONS_KEYS_TABLE . "(key_id, user_id, last_ip, last_login) 
               VALUES ('" . md5($auto_login_key) . "', $user_id, '$user_ip', $current_time)"; 
         } 

         if ( !$db->sql_query($sql) ) 
         { 
            message_die(CRITICAL_ERROR, 'Error updating session key', '', __LINE__, __FILE__, $sql); 
         } 
          
         $sessiondata['autologinid'] = $auto_login_key; 
         unset($auto_login_key); 
      } 
      else 
      { 
         $sessiondata['autologinid'] = ''; 
      } 

//      $sessiondata['autologinid'] = (!$admin) ? (( $enable_autologin && $sessionmethod == SESSION_METHOD_COOKIE ) ? $auto_login_key : '') : $sessiondata['autologinid'];
		$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;
	$userdata['session_admin'] = $admin;
	$userdata['session_key'] = $sessiondata['autologinid'];

	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, $thistopic_id=PAGE_INDEX)
{
	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 || ((( $userdata['user_id'] == ANONYMOUS )?$userdata['user_session_topic']:$userdata['session_topic']) != $thispage_topic) || (( $userdata['user_id'] == ANONYMOUS )?$userdata['user_session_page']:$userdata['session_page']) != $thispage_id)
				{
               // A little trick to reset session_admin on session re-usage 
               $update_admin = (!defined('IN_ADMIN') && $current_time - $userdata['session_time'] > ($board_config['session_length']+60)) ? ', session_admin = 0' : ''; 

               $sql = "UPDATE " . SESSIONS_TABLE . " 
                  SET session_time = $current_time, session_page = $thispage_id$update_admin 
						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 
							WHERE user_id = " . $userdata['user_id'];
						if ( !$db->sql_query($sql) )
						{
							message_die(CRITICAL_ERROR, 'Error updating sessions table', '', __LINE__, __FILE__, $sql);
						}
					//}

               session_clean($userdata['session_id']);

					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;

}

/** 
* Terminates the specified session 
* It will delete the entry in the sessions table for this session, 
* remove the corresponding auto-login key and reset the cookies 
*/ 
function session_end($session_id, $user_id) 
{ 
   global $db, $lang, $board_config, $userdata;
	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();

	
	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);
	}
   // 
   // Remove this auto-login entry (if applicable) 
   // 
   if ( isset($userdata['session_key']) && $userdata['session_key'] != '' ) 
   { 
      $autologin_key = md5($userdata['session_key']); 
      $sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . ' 
         WHERE user_id = ' . (int) $user_id . " 
            AND key_id = '$autologin_key'"; 
      if ( !$db->sql_query($sql) ) 
      { 
         message_die(CRITICAL_ERROR, 'Error removing auto-login key', '', __LINE__, __FILE__, $sql); 
      } 
   } 

   // 
   // We expect that message_die will be called after this function, 
   // but just in case it isn't, reset $userdata to the details for a guest 
   // 
   $sql = 'SELECT * 
      FROM ' . USERS_TABLE . ' 
      WHERE user_id = ' . ANONYMOUS; 
   if ( !($result = $db->sql_query($sql)) ) 
   { 
      message_die(CRITICAL_ERROR, 'Error obtaining user details', '', __LINE__, __FILE__, $sql); 
   } 
   if ( !($userdata = $db->sql_fetchrow($result)) ) 
   { 
      message_die(CRITICAL_ERROR, 'Error obtaining user details', '', __LINE__, __FILE__, $sql); 
   } 
   $db->sql_freeresult($result);

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

	return true;
}
/** 
* Removes expired sessions and auto-login keys from the database 
*/ 
function session_clean($session_id) 
{ 
   global $board_config, $db; 

   // 
   // Delete expired sessions 
   // 
   $sql = 'DELETE FROM ' . SESSIONS_TABLE . ' 
      WHERE session_time < ' . (time() - (int) $board_config['session_length']) . " 
         AND session_id <> '$session_id'"; 
   if ( !$db->sql_query($sql) ) 
   { 
      message_die(CRITICAL_ERROR, 'Error clearing sessions table', '', __LINE__, __FILE__, $sql); 
   } 

   // 
   // Delete expired auto-login keys 
   // If max_autologin_time is not set then keys will never be deleted 
   // (same behaviour as old 2.0.x session code) 
   // 
   if (!empty($board_config['max_autologin_time']) && $board_config['max_autologin_time'] > 0) 
   { 
      $sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . ' 
         WHERE last_login < ' . (time() - (86400 * (int) $board_config['max_autologin_time'])); 
      $db->sql_query($sql); 
   } 

   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;
}

?>

(denna kod är EJ ändrad med http://mods.db9.dk förändringar)
Bästa hälsningar - Mikael Andersson

Välkommen till: http://www.bikersite.se - Träffpunkten för svenska bikers!
Skriv svar

Vilka är online

Användare som besöker denna kategori: 0 och 0 gäster