2001-04-19 13:18:57 +00:00
< ? php
2001-08-13 07:40:52 +00:00
/***************************************************************************
2001-08-26 14:04:27 +00:00
* sessions . php
2001-08-13 07:40:52 +00:00
* -------------------
* begin : Saturday , Feb 13 , 2001
* copyright : ( C ) 2001 The phpBB Group
* email : support @ phpbb . com
*
2001-04-19 13:18:57 +00:00
* $Id $
2001-08-13 07:40:52 +00:00
*
*
***************************************************************************/
2001-08-30 22:20:23 +00:00
/***************************************************************************
*
* 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 .
*
***************************************************************************/
2001-04-19 13:18:57 +00:00
//
// session_begin()
//
// Adds/updates a new session to the database for the given userid.
// Returns the new session ID on success.
//
2001-08-13 07:40:52 +00:00
function session_begin ( $user_id , $user_ip , $page_id , $session_length , $login = 0 , $autologin = 0 )
2001-04-19 13:18:57 +00:00
{
2001-08-01 19:59:04 +00:00
global $db , $lang , $board_config , $phpEx ;
2001-05-06 11:35:32 +00:00
global $HTTP_COOKIE_VARS , $HTTP_GET_VARS , $SID ;
2001-04-19 13:18:57 +00:00
2001-07-23 15:27:41 +00:00
$cookiename = $board_config [ 'cookie_name' ];
$cookiepath = $board_config [ 'cookie_path' ];
$cookiedomain = $board_config [ 'cookie_domain' ];
$cookiesecure = $board_config [ 'cookie_secure' ];
2001-10-15 01:35:32 +00:00
if ( isset ( $HTTP_COOKIE_VARS [ $cookiename . '_sid' ]) || isset ( $HTTP_COOKIE_VARS [ $cookiename ]) )
2001-05-06 11:35:32 +00:00
{
2001-10-14 15:48:18 +00:00
$sessiondata = isset ( $HTTP_COOKIE_VARS [ $cookiename ]) ? unserialize ( stripslashes ( $HTTP_COOKIE_VARS [ $cookiename ])) : " " ;
$session_id = isset ( $HTTP_COOKIE_VARS [ $cookiename . '_sid' ]) ? stripslashes ( $HTTP_COOKIE_VARS [ $cookiename . '_sid' ]) : " " ;
2001-07-23 15:27:41 +00:00
2001-05-06 12:30:25 +00:00
$sessionmethod = SESSION_METHOD_COOKIE ;
2001-05-06 11:35:32 +00:00
}
else
{
2001-10-14 15:48:18 +00:00
$session_id = ( isset ( $HTTP_GET_VARS [ 'sid' ]) ) ? $HTTP_GET_VARS [ 'sid' ] : " " ;
2001-07-23 15:27:41 +00:00
2001-05-06 12:30:25 +00:00
$sessionmethod = SESSION_METHOD_GET ;
2001-05-06 11:35:32 +00:00
}
2001-04-19 13:18:57 +00:00
$current_time = time ();
$expiry_time = $current_time - $session_length ;
//
// Initial ban check against IP and userid
//
2001-08-01 19:59:04 +00:00
ereg ( " (..)(..)(..)(..) " , $user_ip , $user_ip_parts );
2001-04-19 13:18:57 +00:00
$sql = " SELECT ban_ip, ban_userid
2001-08-13 07:40:52 +00:00
FROM " . BANLIST_TABLE . "
WHERE ban_ip = '" . $user_ip_parts[1] . $user_ip_parts[2] . $user_ip_parts[3] . $user_ip_parts[4] . "'
OR ban_ip = '" . $user_ip_parts[1] . $user_ip_parts[2] . $user_ip_parts[3] . "ff'
OR ban_ip = '" . $user_ip_parts[1] . $user_ip_parts[2] . "ffff'
OR ban_ip = '" . $user_ip_parts[1] . "ffffff'
2001-06-02 23:01:35 +00:00
OR ban_userid = $user_id " ;
2001-04-19 13:18:57 +00:00
$result = $db -> sql_query ( $sql );
2001-08-13 07:40:52 +00:00
if ( ! $result )
2001-04-19 13:18:57 +00:00
{
2001-07-03 22:53:31 +00:00
message_die ( CRITICAL_ERROR , " Couldn't obtain ban information. " , __LINE__ , __FILE__ , $sql );
2001-04-19 13:18:57 +00:00
}
2001-06-21 03:20:37 +00:00
2001-04-19 13:18:57 +00:00
$ban_info = $db -> sql_fetchrow ( $result );
//
// Check for user and ip ban ...
2001-08-13 07:40:52 +00:00
//
2001-04-19 13:18:57 +00:00
if ( $ban_info [ 'ban_ip' ] || $ban_info [ 'ban_userid' ])
{
2001-08-01 19:59:04 +00:00
include ( $phpbb_root_path . 'language/lang_' . $board_config [ 'default_lang' ] . '.' . $phpEx );
2001-07-03 22:53:31 +00:00
message_die ( CRITICAL_MESSAGE , $lang [ 'You_been_banned' ]);
2001-04-19 13:18:57 +00:00
}
else
{
2001-07-28 00:38:27 +00:00
/*
2001-08-13 07:40:52 +00:00
$sql = " SELECT COUNT(*)
FROM " . SESSIONS_TABLE . "
2001-07-28 00:38:27 +00:00
WHERE session_ip = '$user_ip' " ;
if ( $result = $db -> sql_query ( $sql ))
{
if ( $db -> sql_numrows ( $result ) > $board_config [ 'session_max' ] )
{
message_die ( CRITICAL_MESSAGE , " Sorry but " . $board_config [ 'sessions_max' ] . " live sessions already exist for your IP. If you are browsing this site using multiple windows you should close one and visit later. If you are browsing from a single window or if this problem persists please contact the board administrator " );
}
}
*/
2001-04-19 13:18:57 +00:00
if ( $user_id == ANONYMOUS )
{
2001-05-13 16:02:30 +00:00
$login = 0 ;
$autologin = 0 ;
2001-05-02 00:32:10 +00:00
}
2001-08-13 07:40:52 +00:00
2001-06-04 16:37:48 +00:00
//
// Try and pull the last time stored
// in a cookie, if it exists
//
$sessiondata [ 'lastvisit' ] = ( ! empty ( $sessiondata [ 'sessiontime' ])) ? $sessiondata [ 'sessiontime' ] : $current_time ;
2001-07-07 14:52:08 +00:00
$sql_update = " UPDATE " . SESSIONS_TABLE . "
2001-05-13 16:02:30 +00:00
SET session_user_id = $user_id , session_start = $current_time , session_time = $current_time , session_page = $page_id , session_logged_in = $login
2001-07-23 15:27:41 +00:00
WHERE ( session_id = '" . $session_id . "' )
2001-05-27 16:41:53 +00:00
AND ( session_ip = '$user_ip' ) " ;
2001-09-13 23:19:25 +00:00
$result = $db -> sql_query ( $sql_update , END_TRANSACTION );
2001-04-19 13:18:57 +00:00
if ( ! $result || ! $db -> sql_affectedrows ())
{
2001-07-23 15:27:41 +00:00
$session_id = md5 ( uniqid ( $user_ip ));
2001-08-13 07:40:52 +00:00
2001-07-07 14:52:08 +00:00
$sql_insert = " INSERT INTO " . SESSIONS_TABLE . "
2001-06-04 16:37:48 +00:00
( session_id , session_user_id , session_start , session_time , session_last_visit , session_ip , session_page , session_logged_in )
2001-07-23 15:23:47 +00:00
VALUES ( '$session_id' , $user_id , $current_time , $current_time , " . $sessiondata['lastvisit'] . " , '$user_ip' , $page_id , $login ) " ;
2001-04-19 13:18:57 +00:00
$result = $db -> sql_query ( $sql_insert );
if ( ! $result )
{
2001-07-03 22:53:31 +00:00
message_die ( CRITICAL_ERROR , " Error creating new session : session_begin " , __LINE__ , __FILE__ , $sql );
2001-04-19 13:18:57 +00:00
}
}
2001-04-28 17:54:22 +00:00
if ( $autologin )
2001-04-19 13:18:57 +00:00
{
2001-07-23 15:27:41 +00:00
mt_srand ( ( double ) microtime () * 1000000 );
2001-04-28 17:54:22 +00:00
$autologin_key = md5 ( uniqid ( mt_rand ()));
2001-07-07 14:52:08 +00:00
$sql_auto = " UPDATE " . USERS_TABLE . "
2001-04-28 17:54:22 +00:00
SET user_autologin_key = '$autologin_key'
2001-05-13 16:02:30 +00:00
WHERE user_id = $user_id " ;
2001-09-13 23:19:25 +00:00
$result = $db -> sql_query ( $sql_auto , END_TRANSACTION );
2001-04-28 17:54:22 +00:00
if ( ! $result )
{
2001-07-03 22:53:31 +00:00
message_die ( CRITICAL_ERROR , " Couldn't update users autologin key : session_begin " , __LINE__ , __FILE__ , $sql );
2001-04-28 17:54:22 +00:00
}
2001-05-06 11:35:32 +00:00
$sessiondata [ 'autologinid' ] = $autologin_key ;
2001-04-19 13:18:57 +00:00
}
2001-05-06 11:35:32 +00:00
$sessiondata [ 'userid' ] = $user_id ;
$sessiondata [ 'sessionstart' ] = $current_time ;
$sessiondata [ 'sessiontime' ] = $current_time ;
2001-07-23 15:23:47 +00:00
2001-05-06 11:35:32 +00:00
$serialised_cookiedata = serialize ( $sessiondata );
2001-07-23 15:27:41 +00:00
setcookie ( $cookiename , $serialised_cookiedata , ( $current_time + 31536000 ), $cookiepath , $cookiedomain , $cookiesecure );
// The session cookie may well change to last just this session soon ...
2001-07-28 00:38:27 +00:00
setcookie ( $cookiename . '_sid' , $session_id , 0 , $cookiepath , $cookiedomain , $cookiesecure );
2001-05-06 11:35:32 +00:00
2001-07-23 15:27:41 +00:00
$SID = ( $sessionmethod == SESSION_METHOD_GET ) ? " sid= " . $session_id : " " ;
2001-04-19 13:18:57 +00:00
}
2001-06-05 22:07:26 +00:00
return $session_id ;
2001-06-04 16:37:48 +00:00
2001-04-19 13:18:57 +00:00
} // session_begin
//
// Checks for a given user session, tidies session
// table and updates user sessions at each page refresh
//
function session_pagestart ( $user_ip , $thispage_id , $session_length )
{
2001-07-23 15:27:41 +00:00
global $db , $lang , $board_config ;
2001-05-06 11:35:32 +00:00
global $HTTP_COOKIE_VARS , $HTTP_GET_VARS , $SID ;
2001-04-19 13:18:57 +00:00
2001-07-23 15:27:41 +00:00
$cookiename = $board_config [ 'cookie_name' ];
$cookiepath = $board_config [ 'cookie_path' ];
$cookiedomain = $board_config [ 'cookie_domain' ];
$cookiesecure = $board_config [ 'cookie_secure' ];
2001-10-15 01:35:32 +00:00
if ( isset ( $HTTP_COOKIE_VARS [ $cookiename . '_sid' ]) || isset ( $HTTP_COOKIE_VARS [ $cookiename ]) )
2001-05-06 11:35:32 +00:00
{
2001-10-14 15:48:18 +00:00
$sessiondata = isset ( $HTTP_COOKIE_VARS [ $cookiename ] ) ? unserialize ( stripslashes ( $HTTP_COOKIE_VARS [ $cookiename ])) : " " ;
$session_id = isset ( $HTTP_COOKIE_VARS [ $cookiename . '_sid' ] ) ? stripslashes ( $HTTP_COOKIE_VARS [ $cookiename . '_sid' ]) : " " ;
2001-05-06 12:30:25 +00:00
$sessionmethod = SESSION_METHOD_COOKIE ;
2001-05-06 11:35:32 +00:00
}
else
{
2001-07-23 15:27:41 +00:00
$session_id = ( isset ( $HTTP_GET_VARS [ 'sid' ])) ? $HTTP_GET_VARS [ 'sid' ] : " " ;
2001-10-14 15:48:18 +00:00
2001-05-06 12:30:25 +00:00
$sessionmethod = SESSION_METHOD_GET ;
2001-05-06 11:35:32 +00:00
}
2001-04-19 13:18:57 +00:00
$current_time = time ();
2001-04-28 17:54:22 +00:00
unset ( $userdata );
2001-04-19 13:18:57 +00:00
//
// Delete expired sessions
//
2001-07-23 15:27:41 +00:00
$expiry_time = $current_time - $board_config [ 'session_length' ];
2001-07-07 14:52:08 +00:00
$sql = " DELETE FROM " . SESSIONS_TABLE . "
2001-04-19 13:18:57 +00:00
WHERE session_time < $expiry_time " ;
$result = $db -> sql_query ( $sql );
if ( ! $result )
{
2001-07-03 22:53:31 +00:00
message_die ( CRITICAL_ERROR , " Error clearing sessions table : session_pagestart " , __LINE__ , __FILE__ , $sql );
2001-04-19 13:18:57 +00:00
}
2001-05-18 15:25:34 +00:00
2001-04-28 17:54:22 +00:00
//
// Does a session exist?
//
2001-07-23 15:27:41 +00:00
if ( ! empty ( $session_id ) )
2001-04-19 13:18:57 +00:00
{
//
2001-08-13 07:40:52 +00:00
// session_id exists so go ahead and attempt to grab all
2001-07-07 14:52:08 +00:00
// data in preparation
2001-04-19 13:18:57 +00:00
//
2001-05-11 12:22:44 +00:00
$sql = " SELECT u.*, s.*
2001-07-07 14:52:08 +00:00
FROM " . SESSIONS_TABLE . " s , " . USERS_TABLE . " u
2001-10-14 15:48:18 +00:00
WHERE s . session_id = '$session_id'
2001-05-27 16:41:53 +00:00
AND s . session_ip = '$user_ip'
2001-05-11 12:22:44 +00:00
AND u . user_id = s . session_user_id " ;
2001-04-19 13:18:57 +00:00
$result = $db -> sql_query ( $sql );
2001-08-13 07:40:52 +00:00
if ( ! $result )
2001-04-19 13:18:57 +00:00
{
2001-07-03 22:53:31 +00:00
message_die ( CRITICAL_ERROR , " Error doing DB query userdata row fetch : session_pagestart " , __LINE__ , __FILE__ , $sql );
2001-04-19 13:18:57 +00:00
}
2001-08-13 07:40:52 +00:00
2001-04-19 13:18:57 +00:00
$userdata = $db -> sql_fetchrow ( $result );
2001-08-13 07:40:52 +00:00
2001-04-19 13:18:57 +00:00
//
2001-04-28 17:54:22 +00:00
// Did the session exist in the DB?
2001-08-13 07:40:52 +00:00
//
2001-10-14 15:48:18 +00:00
if ( isset ( $userdata [ 'user_id' ]) )
2001-04-19 13:18:57 +00:00
{
2001-07-23 15:27:41 +00:00
$SID = ( $sessionmethod == SESSION_METHOD_GET ) ? " sid= " . $session_id : " " ;
2001-05-06 12:30:25 +00:00
2001-07-28 00:38:27 +00:00
$sessiondata [ 'sessiontime' ] = $current_time ;
$serialised_cookiedata = serialize ( $sessiondata );
setcookie ( $cookiename , $serialised_cookiedata , ( $current_time + 31536000 ), $cookiepath , $cookiedomain , $cookiesecure );
2001-04-19 13:18:57 +00:00
//
2001-04-28 17:54:22 +00:00
// Only update session DB a minute or so after last update
2001-04-19 13:18:57 +00:00
//
2001-04-28 17:54:22 +00:00
if ( $current_time - $userdata [ 'session_time' ] > 60 )
2001-04-19 13:18:57 +00:00
{
2001-07-07 14:52:08 +00:00
$sql = " UPDATE " . SESSIONS_TABLE . "
2001-05-13 16:02:30 +00:00
SET session_time = $current_time , session_page = $thispage_id
2001-07-07 14:52:08 +00:00
WHERE ( session_id = '" . $userdata[' session_id '] . "' )
2001-05-27 16:41:53 +00:00
AND ( session_ip = '$user_ip' )
2001-07-07 14:52:08 +00:00
AND ( session_user_id = " . $userdata['user_id'] . " ) " ;
2001-04-28 17:54:22 +00:00
$result = $db -> sql_query ( $sql );
if ( ! $result )
2001-04-19 13:18:57 +00:00
{
2001-07-03 22:53:31 +00:00
message_die ( CRITICAL_ERROR , " Error updating sessions table : session_pagestart " , __LINE__ , __FILE__ , $sql );
2001-04-28 17:54:22 +00:00
}
else
{
2001-06-05 22:07:26 +00:00
$userdata [ 'session_time' ] = $current_time ;
2001-04-28 17:54:22 +00:00
return $userdata ;
}
}
//
// We didn't need to update session
// so just return userdata
//
2001-08-13 07:40:52 +00:00
2001-04-28 17:54:22 +00:00
return $userdata ;
}
}
//
2001-07-07 14:52:08 +00:00
// 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.
2001-04-28 17:54:22 +00:00
//
2001-04-19 13:18:57 +00:00
2001-05-13 16:02:30 +00:00
$login = 0 ;
$autologin = 0 ;
2001-04-19 13:18:57 +00:00
2001-07-23 15:27:41 +00:00
if ( isset ( $sessiondata [ 'userid' ]) && isset ( $sessiondata [ 'autologinid' ]) )
2001-04-28 17:54:22 +00:00
{
2001-07-23 15:27:41 +00:00
$sql = " SELECT user_id, user_autologin_key
2001-08-13 07:40:52 +00:00
FROM " . USERS_TABLE . "
2001-07-23 15:23:47 +00:00
WHERE user_id = " . $sessiondata['userid'] ;
2001-04-28 17:54:22 +00:00
$result = $db -> sql_query ( $sql );
2001-08-13 07:40:52 +00:00
if ( ! $result )
2001-04-19 13:18:57 +00:00
{
2001-07-03 22:53:31 +00:00
message_die ( CRITICAL_ERROR , " Error doing DB query userdata row fetch (non-session) : session_pagestart " , __LINE__ , __FILE__ , $sql );
2001-04-19 13:18:57 +00:00
}
2001-08-13 07:40:52 +00:00
2001-04-28 17:54:22 +00:00
$userdata = $db -> sql_fetchrow ( $result );
2001-05-06 11:35:32 +00:00
if ( $userdata [ 'user_autologin_key' ])
2001-04-19 13:18:57 +00:00
{
2001-05-06 11:35:32 +00:00
if ( $userdata [ 'user_autologin_key' ] == $sessiondata [ 'autologinid' ])
2001-04-19 13:18:57 +00:00
{
2001-04-28 17:54:22 +00:00
//
2001-08-13 07:40:52 +00:00
// We have a match, and not the kind you light ...
2001-04-28 17:54:22 +00:00
//
2001-05-13 16:02:30 +00:00
$login = 1 ;
$autologin = 1 ;
2001-07-28 00:38:27 +00:00
$user_id = $sessiondata [ 'userid' ];
}
else
{
unset ( $userdata );
$user_id = ANONYMOUS ;
2001-04-19 13:18:57 +00:00
}
2001-05-06 11:35:32 +00:00
}
else
{
2001-07-28 00:38:27 +00:00
unset ( $userdata );
2001-06-05 22:07:26 +00:00
$user_id = ANONYMOUS ;
2001-04-19 13:18:57 +00:00
}
}
else
{
2001-07-28 00:38:27 +00:00
unset ( $userdata );
2001-06-05 22:07:26 +00:00
$user_id = ANONYMOUS ;
2001-04-28 17:54:22 +00:00
}
2001-04-19 13:18:57 +00:00
2001-06-05 22:07:26 +00:00
$result_id = session_begin ( $user_id , $user_ip , $thispage_id , $session_length , $login , $autologin );
2001-04-28 17:54:22 +00:00
if ( ! $result )
{
2001-07-03 22:53:31 +00:00
message_die ( CRITICAL_ERROR , " Error creating user session : session_pagestart " , __LINE__ , __FILE__ , $sql );
2001-04-19 13:18:57 +00:00
}
2001-06-05 22:07:26 +00:00
else
{
$sql = " SELECT u.*, s.*
2001-07-07 14:52:08 +00:00
FROM " . SESSIONS_TABLE . " s , " . USERS_TABLE . " u
2001-06-05 22:07:26 +00:00
WHERE s . session_id = '$result_id'
AND s . session_ip = '$user_ip'
AND u . user_id = s . session_user_id " ;
$result = $db -> sql_query ( $sql );
2001-08-13 07:40:52 +00:00
if ( ! $result )
2001-06-05 22:07:26 +00:00
{
2001-07-03 22:53:31 +00:00
message_die ( CRITICAL_ERROR , " Error doing DB query userdata row fetch : session_pagestart new user " , __LINE__ , __FILE__ , $sql );
2001-06-05 22:07:26 +00:00
}
$userdata = $db -> sql_fetchrow ( $result );
}
2001-04-19 13:18:57 +00:00
return $userdata ;
} // session_check()
//
// session_end closes out a session
// deleting the corresponding entry
// in the sessions table
//
2001-08-13 07:40:52 +00:00
function session_end ( $session_id , $user_id )
2001-04-19 13:18:57 +00:00
{
2001-07-23 15:27:41 +00:00
global $db , $lang , $board_config ;
2001-05-06 11:35:32 +00:00
global $HTTP_COOKIE_VARS , $HTTP_GET_VARS , $SID ;
2001-04-19 13:18:57 +00:00
2001-07-23 15:27:41 +00:00
$cookiename = $board_config [ 'cookie_name' ];
$cookiepath = $board_config [ 'cookie_path' ];
$cookiedomain = $board_config [ 'cookie_domain' ];
$cookiesecure = $board_config [ 'cookie_secure' ];
2001-10-15 01:35:32 +00:00
if ( isset ( $HTTP_COOKIE_VARS [ $cookiename . '_sid' ]) || isset ( $HTTP_COOKIE_VARS [ $cookiename ]) )
2001-05-06 11:35:32 +00:00
{
2001-10-14 15:48:18 +00:00
$sessiondata = isset ( $HTTP_COOKIE_VARS [ $cookiename ] ) ? unserialize ( stripslashes ( $HTTP_COOKIE_VARS [ $cookiename ])) : " " ;
$session_id = isset ( $HTTP_COOKIE_VARS [ $cookiename . '_sid' ] ) ? stripslashes ( $HTTP_COOKIE_VARS [ $cookiename . '_sid' ]) : " " ;
2001-07-23 15:27:41 +00:00
2001-05-06 12:30:25 +00:00
$sessionmethod = SESSION_METHOD_COOKIE ;
2001-05-06 11:35:32 +00:00
}
else
{
2001-10-14 15:48:18 +00:00
$session_id = ( isset ( $HTTP_GET_VARS [ 'sid' ]) ) ? $HTTP_GET_VARS [ 'sid' ] : " " ;
2001-07-23 15:27:41 +00:00
2001-05-06 12:30:25 +00:00
$sessionmethod = SESSION_METHOD_GET ;
2001-05-06 11:35:32 +00:00
}
2001-04-19 13:18:57 +00:00
$current_time = time ();
2001-07-07 14:52:08 +00:00
$sql = " UPDATE " . SESSIONS_TABLE . "
2001-05-13 16:02:30 +00:00
SET session_logged_in = 0 , session_user_id = - 1 , session_time = $current_time
2001-07-23 15:27:41 +00:00
WHERE ( session_id = '" . $session_id . "' )
2001-05-13 16:49:41 +00:00
AND ( session_user_id = $user_id ) " ;
2001-09-13 23:19:25 +00:00
$result = $db -> sql_query ( $sql , BEGIN_TRANSACTION );
2001-08-13 07:40:52 +00:00
if ( ! $result )
2001-04-19 13:18:57 +00:00
{
2001-07-03 22:53:31 +00:00
message_die ( CRITICAL_ERROR , " Couldn't delete user session : session_end " , __LINE__ , __FILE__ , $sql );
2001-04-19 13:18:57 +00:00
}
2001-10-14 15:48:18 +00:00
if ( isset ( $sessiondata [ 'autologinid' ]) )
2001-04-28 17:54:22 +00:00
{
2001-07-07 14:52:08 +00:00
$sql = " UPDATE " . USERS_TABLE . "
2001-04-28 17:54:22 +00:00
SET user_autologin_key = ''
2001-05-13 16:02:30 +00:00
WHERE user_id = $user_id " ;
2001-09-13 23:19:25 +00:00
$result = $db -> sql_query ( $sql , END_TRANSACTION );
2001-08-13 07:40:52 +00:00
if ( ! $result )
2001-04-28 17:54:22 +00:00
{
2001-07-03 22:53:31 +00:00
message_die ( CRITICAL_ERROR , " Couldn't reset user autologin key : session_end " , __LINE__ , __FILE__ , $sql );
2001-04-28 17:54:22 +00:00
}
2001-05-06 11:35:32 +00:00
$sessiondata [ 'autologinid' ] = " " ;
2001-04-28 17:54:22 +00:00
}
2001-05-06 11:35:32 +00:00
$sessiondata [ 'sessionend' ] = $current_time ;
2001-04-28 17:54:22 +00:00
2001-05-06 11:35:32 +00:00
$serialised_cookiedata = serialize ( $sessiondata );
2001-07-23 15:27:41 +00:00
setcookie ( $cookiename , $serialised_cookiedata , ( $current_time + 31536000 ), $cookiepath , $cookiedomain , $cookiesecure );
// The session cookie may well change to last just this session soon ...
2001-07-28 00:38:27 +00:00
setcookie ( $cookiename . '_sid' , $session_id , 0 , $cookiepath , $cookiedomain , $cookiesecure );
2001-04-19 13:18:57 +00:00
2001-07-23 15:27:41 +00:00
$SID = ( $sessionmethod == SESSION_METHOD_GET ) ? " sid= " . $session_id : " " ;
2001-05-06 11:35:32 +00:00
2001-07-23 15:27:41 +00:00
return TRUE ;
2001-04-19 13:18:57 +00:00
} // session_end()
2001-05-20 20:58:55 +00:00
//
2001-07-07 14:52:08 +00:00
// 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.
2001-05-20 20:58:55 +00:00
//
2001-10-14 18:22:32 +00:00
function append_sid ( $url , $non_html_amp = false )
2001-05-20 20:58:55 +00:00
{
global $SID ;
2001-07-23 15:23:47 +00:00
if ( ! empty ( $SID ) && ! eregi ( " sid= " , $url ))
2001-05-20 20:58:55 +00:00
{
2001-10-14 18:22:32 +00:00
$url .= ( ( strpos ( $url , " ? " ) != false ) ? ( ( $non_html_amp ) ? " & " : " & " ) : " ? " ) . $SID ;
2001-05-20 20:58:55 +00:00
}
return ( $url );
}
2001-05-13 16:02:30 +00:00
?>