2004-12-11 19:37:21 +00:00
|
|
|
<?php
|
2004-03-15 16:22:00 +00:00
|
|
|
|
2004-12-13 03:50:02 +00:00
|
|
|
/*
|
|
|
|
|
* session.php - session handler functions
|
2004-03-15 16:22:00 +00:00
|
|
|
* sessions are stored in a mysql table
|
|
|
|
|
*/
|
|
|
|
|
|
2006-07-08 21:49:49 +00:00
|
|
|
/* the number of days a session cookie is flaged to last */
|
|
|
|
|
define(SESSION_DAYS_TO_EXPIRE, 2);
|
|
|
|
|
|
2004-12-13 03:50:02 +00:00
|
|
|
class session
|
2004-03-15 16:22:00 +00:00
|
|
|
{
|
2004-12-13 03:50:02 +00:00
|
|
|
// create session object
|
|
|
|
|
function session ($name)
|
|
|
|
|
{
|
|
|
|
|
// set name for this session
|
|
|
|
|
$this->name = $name;
|
|
|
|
|
|
|
|
|
|
// define options for sessions
|
|
|
|
|
ini_set('session.name', $this->name);
|
2006-06-27 19:16:27 +00:00
|
|
|
ini_set('session.use_cookies', true);
|
|
|
|
|
ini_set('session.use_only_cookies', true);
|
2004-12-13 03:50:02 +00:00
|
|
|
|
|
|
|
|
// setup session object
|
|
|
|
|
session_set_save_handler(
|
|
|
|
|
array(&$this, "_open"),
|
|
|
|
|
array(&$this, "_close"),
|
|
|
|
|
array(&$this, "_read"),
|
|
|
|
|
array(&$this, "_write"),
|
|
|
|
|
array(&$this, "_destroy"),
|
|
|
|
|
array(&$this, "_gc")
|
|
|
|
|
);
|
|
|
|
|
|
2006-07-08 21:49:49 +00:00
|
|
|
// default lifetime on session cookie (SESSION_DAYS_TO_EXPIRE days)
|
2004-12-13 03:50:02 +00:00
|
|
|
session_set_cookie_params(
|
2006-07-08 21:49:49 +00:00
|
|
|
(60*60*24*SESSION_DAYS_TO_EXPIRE),
|
2004-12-13 03:50:02 +00:00
|
|
|
'/'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// start the loaded session
|
|
|
|
|
session_start();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// register variables into session (dynamic load and save of vars)
|
|
|
|
|
function register ($var)
|
|
|
|
|
{
|
|
|
|
|
global $$var;
|
|
|
|
|
|
|
|
|
|
// load $var into memory
|
|
|
|
|
if (isset($_SESSION[$var]))
|
|
|
|
|
$$var = $_SESSION[$var];
|
|
|
|
|
|
|
|
|
|
// store var into session
|
|
|
|
|
$_SESSION[$var] =& $$var;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// destroy session
|
|
|
|
|
function destroy ()
|
|
|
|
|
{
|
2006-07-06 05:00:38 +00:00
|
|
|
if(session_id() != "")
|
|
|
|
|
session_destroy();
|
2004-12-13 03:50:02 +00:00
|
|
|
}
|
2004-03-15 16:22:00 +00:00
|
|
|
|
2004-12-13 03:50:02 +00:00
|
|
|
// open session file (not needed for DB access)
|
|
|
|
|
function _open ($save_path, $session_name) { return true; }
|
2004-03-15 16:22:00 +00:00
|
|
|
|
2004-12-13 03:50:02 +00:00
|
|
|
// close session file (not needed for DB access)
|
|
|
|
|
function _close () { return true; }
|
|
|
|
|
|
|
|
|
|
// read session
|
|
|
|
|
function _read ($key)
|
|
|
|
|
{
|
2006-06-27 19:16:27 +00:00
|
|
|
$result = query_parameters("SELECT data FROM session_list WHERE session_id = '?'", $key);
|
2004-12-13 03:50:02 +00:00
|
|
|
if (!$result) { return null; }
|
2006-06-30 16:33:02 +00:00
|
|
|
$oRow = mysql_fetch_object($result);
|
|
|
|
|
return $oRow->data;
|
2004-12-13 03:50:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// write session to DB
|
|
|
|
|
function _write ($key, $value)
|
|
|
|
|
{
|
2004-12-12 06:35:40 +00:00
|
|
|
$messages = "";
|
2004-12-13 03:50:02 +00:00
|
|
|
if(isset($GLOBALS['msg_buffer']))
|
|
|
|
|
$messages = implode("|", $GLOBALS['msg_buffer']);
|
2004-03-15 16:22:00 +00:00
|
|
|
|
2006-06-27 19:16:27 +00:00
|
|
|
query_parameters("REPLACE session_list VALUES ('?', '?', '?', '?', '?', ?)",
|
|
|
|
|
$key, $_SESSION['current']->iUserId, get_remote(), $value, $messages, "NOW()");
|
2004-12-13 03:50:02 +00:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// delete current session
|
|
|
|
|
function _destroy ($key)
|
|
|
|
|
{
|
2006-06-27 19:16:27 +00:00
|
|
|
query_parameters("DELETE FROM session_list WHERE session_id = '?'", $key);
|
2004-12-13 03:50:02 +00:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// clear old sessions (moved into a separate cron process)
|
|
|
|
|
function _gc ($maxlifetime)
|
|
|
|
|
{
|
2006-07-08 21:49:49 +00:00
|
|
|
query_parameters("DELETE FROM session_list WHERE to_days(now()) - to_days(stamp) >= '?'",
|
|
|
|
|
SESSION_DAYS_TO_EXPIRE);
|
2004-12-13 03:50:02 +00:00
|
|
|
return true;
|
|
|
|
|
}
|
2004-03-15 16:22:00 +00:00
|
|
|
|
|
|
|
|
}
|
2004-12-13 03:50:02 +00:00
|
|
|
// end session
|
2004-03-15 16:22:00 +00:00
|
|
|
|
2004-12-13 03:50:02 +00:00
|
|
|
?>
|