diff options
author | James Atkinson <thefinn@users.sourceforge.net> | 2001-02-22 06:10:12 +0000 |
---|---|---|
committer | James Atkinson <thefinn@users.sourceforge.net> | 2001-02-22 06:10:12 +0000 |
commit | 8918532a1329157916e539ee84cd711fd3f267bc (patch) | |
tree | 0bfcb465225f44365a137d76a1dd077ea0a7161d /phpBB/functions/sessions.php | |
parent | 658df35cd4c176916e7cd0bd766bb8c8e0cc77d1 (diff) | |
download | forums-8918532a1329157916e539ee84cd711fd3f267bc.tar forums-8918532a1329157916e539ee84cd711fd3f267bc.tar.gz forums-8918532a1329157916e539ee84cd711fd3f267bc.tar.bz2 forums-8918532a1329157916e539ee84cd711fd3f267bc.tar.xz forums-8918532a1329157916e539ee84cd711fd3f267bc.zip |
phpBB 2 is started
git-svn-id: file:///svn/phpbb/trunk@13 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/functions/sessions.php')
-rw-r--r-- | phpBB/functions/sessions.php | 115 |
1 files changed, 114 insertions, 1 deletions
diff --git a/phpBB/functions/sessions.php b/phpBB/functions/sessions.php index b4278d1182..60f2ae7015 100644 --- a/phpBB/functions/sessions.php +++ b/phpBB/functions/sessions.php @@ -1,6 +1,6 @@ <?php /*************************************************************************** - * + * sessions.php * ------------------- * begin : Saturday, Feb 13, 2001 * copyright : (C) 2001 The phpBB Group @@ -23,5 +23,118 @@ ***************************************************************************/ +/** + * new_session() + * Adds a new session to the database for the given userid. + * Returns the new session ID. + * Also deletes all expired sessions from the database, based on the given session lifespan. + */ +function new_session($userid, $remote_ip, $lifespan, $db) +{ + + mt_srand( (double) microtime() * 1000000); + $sessid = mt_rand(); + + $currtime = (string) (time()); + $expirytime = (string) (time() - $lifespan); + + $deleteSQL = "DELETE FROM sessions WHERE (start_time < $expirytime)"; + $delresult = $db->sql_query($deleteSQL); + + if (!$delresult) + { + error_die($db, SESSION_CREATE); + } + + $sql = "INSERT INTO sessions (sess_id, user_id, start_time, remote_ip) VALUES ($sessid, $userid, $currtime, '$remote_ip')"; + + $result = $db->sql_query($sql); + + if ($result) + { + return $sessid; + } + else + { + error_die($db, SESSION_CREATE); + } // if/else + +} // new_session() + +/* + * Sets the sessID cookie for the given session ID. the $cookietime parameter + * is no longer used, but just hasn't been removed yet. It'll break all the modules + * (just login) that call this code when it gets removed. + * Sets a cookie with no specified expiry time. This makes the cookie last until the + * user's browser is closed. (at last that's the case in IE5 and NS4.7.. Haven't tried + * it with anything else.) + */ +function set_session_cookie($sessid, $cookietime, $cookiename, $cookiepath, $cookiedomain, $cookiesecure) +{ + // This sets a cookie that will persist until the user closes their browser window. + // since session expiry is handled on the server-side, cookie expiry time isn't a big deal. + setcookie($cookiename, $sessid, '', $cookiepath, $cookiedomain, $cookiesecure); + +} // set_session_cookie() + +/* + * Returns the userID associated with the given session, based on + * the given session lifespan $cookietime and the given remote IP + * address. If no match found, returns 0. + */ +function get_userid_from_session($sessid, $cookietime, $remote_ip, $db) +{ + $mintime = time() - $cookietime; + $sql = "SELECT user_id + FROM sessions + WHERE (sess_id = $sessid) + AND (start_time > $mintime) + AND (remote_ip = '$remote_ip')"; + $result = $db->sql_query($sql); + if (!$result) + { + error_die($db, "Error doing DB query in get_userid_from_session()"); + } + $rowset = $db->sql_fetchrowset(); + $num_rows = $db->sql_numrows(); + if ($num_rows == 0) + { + return 0; + } + else + { + return $rowset[0]["user_id"]; + } + +} // get_userid_from_session() + + +function update_session_time($sessid, $db) +{ + + $newtime = (string) time(); + $sql = "UPDATE sessions SET start_time=$newtime WHERE (sess_id = $sessid)"; + $result = $db->sql_query($sql); + if (!$result) + { + $db_error = $db->sql_error(); + error_die($db, "Error doing DB update in update_session_time(). Reason: " . $db_error["message"]); + } + return 1; + +} // update_session_time() + +function end_user_session($userid, $db) +{ + $sql = "DELETE FROM sessions WHERE (user_id = $userid)"; + $result = $db->sql_query($sql, $db); + if (!$result) + { + $db_error = $db->sql_error(); + error_die($db, "Delete failed in end_user_session(). Reason: " . $db_error["message"]); + } + return 1; + +} // end_session() ?> |