<?
function sess_open($save_path, $session_name){
	global $Config;
	$_SERVER['Session_DB'] = new mysql_db($Config['Hostname'], $Config['Username'], $Config['Password'], $Config['Database']);
	$_SERVER['Session_DB']->connect();
	return $_SERVER['Session_DB']->Connected();
}

function sess_close(){
	$_SERVER['Session_DB']->disconnect();
	return (!$_SERVER['Session_DB']->Connected());
}

function sess_read($key){
	$_SERVER['Session_DB']->Query('UPDATE Sessions SET Expiry="' . (time() + $_SERVER['Session_MaxLife']) . '" WHERE SessionID="' . $key . '" AND Expiry >= "' . time() . '"');
	$Value = $_SERVER['Session_DB']->oQuery('SELECT Value FROM Sessions WHERE SessionID = "' . $key . '" AND Expiry >= ' . time());
	if ($Value) return $Value;
	else return '';
}

function sess_write($key, $val){
	$Expiry = time() + $_SERVER['Session_MaxLife'];
	$Value = addslashes($val);
	if (!$qid = $_SERVER['Session_DB']->Query('INSERT INTO Sessions VALUES ("' . $key . '", ' . $Expiry . ', "' . $Value . '")'))
		$qid = $_SERVER['Session_DB']->Query('UPDATE Sessions SET Expiry = ' . $Expiry . ', Value = "' . $Value . '" WHERE SessionID = "' . $key . '" AND Expiry > ' . time());

	return $qid;
}

function sess_destroy($key){
	return $_SERVER['Session_DB']->Query('DELETE FROM Sessions WHERE SessionID = "' . $key . '"');
}

function sess_gc($maxlifetime){
	return $_SERVER['Session_DB']->Query('DELETE FROM Sessions WHERE Expiry < ' . time());
}

$_SERVER['Session_MaxLife'] = get_cfg_var('session.gc_maxlifetime');
ini_set('session.save_handler', 'user');
ini_set('arg_separator.output' , '&amp;');
session_set_save_handler('sess_open', 'sess_close', 'sess_read', 'sess_write', 'sess_destroy', 'sess_gc');

session_start();
foreach ($_SESSION as $key=>$value)
	if (is_string($value))
        	$_SESSION[$key] = trim($value);

function murder_session(){
//	die('Attempted to murder session. dunno why.');
	session_destroy();
	unset($_SESSION);
}
?>
