Forum plat vanwege fout in volgens mij sessions.php

Hulp nodig bij een modificaties of op zoek naar een MOD? Bekijk ons archief. Support wordt helaas niet meer verleend.
Forumregels

Sinds 1 januari 2009 wordt phpBB2 niet meer ondersteund.
Onderstaande informatie is verouderd en dient uitsluitend als archief.
phpBB2.0.x
Gebruikersavatar
Grimlock
Berichten: 513
Lid geworden op: 01 sep 2004, 12:56

Bericht door Grimlock » 25 jun 2005, 15:24

Ben niet achterlijk:

Code: Selecteer alles

Fout

SQL-query : 

INSERT INTO phpbb_config( config_name, config_value )
VALUES (
"hidde_last_logon", "0"
)

MySQL retourneerde:
#1062 - Duplicate entry 'hidde_last_logon' for key 1 

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20316
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 25 jun 2005, 15:27

Je moet ze niet eenv oor een doen, maar dit

Code: Selecteer alles

ALTER TABLE phpbb_users ADD user_totaltime INT (11) DEFAULT "0";
ALTER TABLE phpbb_users ADD user_totallogon INT (11) DEFAULT "0";
ALTER TABLE phpbb_users ADD user_totalpages INT (11) DEFAULT "0";
UPDATE phpbb_users SET user_totaltime=(user_session_time-user_lastlogon) WHERE user_totaltime="0" AND user_lastlogon>0;
UPDATE phpbb_users SET user_lastlogon=user_lastvisit WHERE user_lastlogon="0";
UPDATE phpbb_users SET user_totallogon=1 WHERE user_totallogon="0" AND user_session_time<>"0"; 
ïn een keer in sql vak plakken ;)

Gebruikersavatar
Grimlock
Berichten: 513
Lid geworden op: 01 sep 2004, 12:56

Bericht door Grimlock » 25 jun 2005, 15:30

Deed ik, nu krijg ik deze fout:

Code: Selecteer alles

 Database newcybertron_nl_-_db  wordt uitgevoerd op localhost

Fout

SQL-query : 

ALTER TABLE phpbb_users ADD user_totaltime INT( 11 ) DEFAULT "0"

MySQL retourneerde:
#1060 - Duplicate column name 'user_totaltime'

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20316
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 25 jun 2005, 15:32

dan zou het nu moeten werken ;)

Gebruikersavatar
Grimlock
Berichten: 513
Lid geworden op: 01 sep 2004, 12:56

Bericht door Grimlock » 25 jun 2005, 15:35


Gebruikersavatar
Grimlock
Berichten: 513
Lid geworden op: 01 sep 2004, 12:56

Bericht door Grimlock » 25 jun 2005, 16:13

anyone? :(


...weten jullie zeker dat de fout niet meer in sessions.php zit?

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 25 jun 2005, 16:21

Nee die is waarschijnlijk niet fout.

Voer nog eens uit

Code: Selecteer alles

ALTER TABLE phpbb_users ADD user_totallogon INT (11) DEFAULT "0"; 
Afbeelding

Gebruikersavatar
Grimlock
Berichten: 513
Lid geworden op: 01 sep 2004, 12:56

Bericht door Grimlock » 25 jun 2005, 16:22

Code: Selecteer alles

Fout

SQL-query : 

ALTER TABLE phpbb_users ADD user_totallogon INT( 11 ) DEFAULT "0"

MySQL retourneerde:
#1060 - Duplicate column name 'user_totallogon' 
Dus de fout moet in mySQL zitten? Nja, weten we iig waar we moeten zijn :)

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 25 jun 2005, 16:31

En dan nog

Code: Selecteer alles

ALTER TABLE phpbb_users ADD user_lastlogon INT (11) DEFAULT "0";
UPDATE phpbb_users SET user_totaltime=(user_session_time-user_lastlogon) WHERE user_totaltime="0" AND user_lastlogon>0;
UPDATE phpbb_users SET user_lastlogon=user_lastvisit WHERE user_lastlogon="0";
UPDATE phpbb_users SET user_totallogon=1 WHERE user_totallogon="0" AND user_session_time<>"0";
Afbeelding

Gebruikersavatar
Grimlock
Berichten: 513
Lid geworden op: 01 sep 2004, 12:56

Bericht door Grimlock » 25 jun 2005, 16:32

Code: Selecteer alles

Uw SQL-query is succesvol uitgevoerd.
SQL-query : [Wijzigen] [Creëer PHP Code]
ALTER TABLE phpbb_users ADD user_lastlogon INT( 11 ) DEFAULT "0";# Getroffen rijen:169
UPDATE phpbb_users SET user_totaltime = ( user_session_time - user_lastlogon ) WHERE user_totaltime = "0" AND user_lastlogon >0;# MySQL gaf een lege resultaat set terug (0 rijen).
UPDATE phpbb_users SET user_lastlogon = user_lastvisit WHERE user_lastlogon = "0";# Getroffen rijen:160
UPDATE phpbb_users SET user_totallogon =1 WHERE user_totallogon = "0" AND user_session_time <> "0";# Getroffen rijen:160
:)

Gebruikersavatar
Grimlock
Berichten: 513
Lid geworden op: 01 sep 2004, 12:56

Bericht door Grimlock » 25 jun 2005, 16:33

Het forum werkt weer!!!! :D: :thumb:
Laatst gewijzigd door Grimlock op 25 jun 2005, 16:34, 1 keer totaal gewijzigd.

Gebruikersavatar
Grimlock
Berichten: 513
Lid geworden op: 01 sep 2004, 12:56

Bericht door Grimlock » 25 jun 2005, 16:33

wtf, nu opeens niet meer! :shock:

Code: Selecteer alles

phpBB : Critical Error

Error doing DB query userdata row fetch

DEBUG MODE

SELECT u.*, s.* FROM phpbb_sessions s, phpbb_users u WHERE s.session_id = '78925614b8db90043741943f02db6bba' AND u.user_id = s.session_user_id AND session_time > 1119710067

Line : 261
File : sessions.php

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 25 jun 2005, 16:35

Te vroeg gejuigt :P

Code: Selecteer alles

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

Code: Selecteer alles

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

Gebruikersavatar
Grimlock
Berichten: 513
Lid geworden op: 01 sep 2004, 12:56

Bericht door Grimlock » 25 jun 2005, 16:39

http://www.newcybertron.nl/forum.php

Oftewel de foutmelding:

Code: Selecteer alles

Parse error: parse error, unexpected $ in /var/www/html/includes/sessions.php on line 412

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 25 jun 2005, 16:40

Ja die zag ik al :P Alleen bij mij (het bestand wat je een paar posts geleden gaf) is regel 412 ?>
Afbeelding

Gebruikersavatar
Grimlock
Berichten: 513
Lid geworden op: 01 sep 2004, 12:56

Bericht door Grimlock » 25 jun 2005, 16:43

Het eindevan het php.

regel 412:


Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 25 jun 2005, 16:46

Misschien kun je dan beter het bestand sessions.php opnieuw modden want ik zie de fout niet.
Afbeelding

Gebruikersavatar
Grimlock
Berichten: 513
Lid geworden op: 01 sep 2004, 12:56

Bericht door Grimlock » 25 jun 2005, 16:48

Luuk schreef:Misschien kun je dan beter het bestand sessions.php opnieuw modden want ik zie de fout niet.
Ik zal het eens proberen volgens mij had ik een backupje gemaakt van sessions.php

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 25 jun 2005, 16:49

Heb hem toch gevonden...

Code: Selecteer alles

                  if ( !$db->sql_query($sql) )
                  {
                     message_die(CRITICAL_ERROR, 'Error updating sessions table', '', __LINE__, __FILE__, $sql);
                  }
               //}
moet zijn

Code: Selecteer alles

                  if ( !$db->sql_query($sql) )
                  {
                     message_die(CRITICAL_ERROR, 'Error updating sessions table', '', __LINE__, __FILE__, $sql);
                  }
               }
Afbeelding

Gebruikersavatar
Grimlock
Berichten: 513
Lid geworden op: 01 sep 2004, 12:56

Bericht door Grimlock » 25 jun 2005, 16:51

Zou jij dat even willen doen? Bij mij vind hij de eerste regel al niet! :cry:

Dit te doen:

Code: Selecteer alles

#-----[ 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
En dit is mijn sessions.php:

Code: Selecteer alles

<?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 = '';
	}
	$page_id = (int) $page_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;
					$sql = 'SELECT * FROM ' . USERS_TABLE . ' WHERE user_id = ' . ANONYMOUS;
					$result = $db->sql_query($sql);
					$userdata = $db->sql_fetchrow($result);
					$db->sql_freeresult($result);		
				}
			}
			else
			{
				// Autologin is not set. Don't login, set as anonymous user
				$login = 0;
				$enable_autologin = 0;
				$user_id = $userdata['user_id'] = ANONYMOUS;
				$sql = 'SELECT * FROM ' . USERS_TABLE . ' WHERE user_id = ' . ANONYMOUS;
				$result = $db->sql_query($sql);
				$userdata = $db->sql_fetchrow($result);
				$db->sql_freeresult($result);
			}
		}
		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 = '';
	}
	$thispage_id = (int) $thispage_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, user_totalpages = user_totalpages+1, user_totaltime = user_totaltime+($current_time-".$userdata['session_time'].") 
						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);
						}
//}

					//
					// Delete expired sessions					//
					//
					$expiry_time = $current_time - $board_config['session_length'];
					$sql = "DELETE FROM " . SESSIONS_TABLE . " 
						WHERE UNIX_TIMESTAMP() - session_time >=172800AND 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;
}

?>

Gesloten