This repository has been archived on 2025-05-24. You can view files and clone it, but cannot push or open issues or pull requests.
Files
qemudb/include/session.php

104 lines
2.3 KiB
PHP
Raw Normal View History

<?php
2004-03-15 16:22:00 +00:00
function apidb_session_start()
{
session_set_cookie_params(time() + 3600 * 48);
session_start();
if(isset($_SESSION['current']))
2004-12-12 06:35:40 +00:00
$_SESSION['current']->connect();
2004-03-15 16:22:00 +00:00
}
function apidb_session_destroy()
{
session_destroy();
}
/**
2004-03-15 16:22:00 +00:00
* session handler functions
* sessions are stored in a mysql table
*/
function _session_open($save_path, $session_name)
{
opendb();
//mysql_query("CREATE TABLE IF NOT EXISTS session_list (session_id varchar(64) not null, ".
// "userid int, ip varchar(64), data text, messages text, stamp timestamp, primary key(session_id))");
return true;
}
function _session_close()
{
return true;
}
function _session_read($key)
{
global $msg_buffer;
opendb();
$result = mysql_query("SELECT data, messages FROM session_list WHERE session_id = '$key'");
if(!$result)
2004-12-12 06:35:40 +00:00
return null;
2004-03-15 16:22:00 +00:00
$r = mysql_fetch_object($result);
if($r->messages)
2004-12-12 06:35:40 +00:00
$msg_buffer = explode("|", $r->messages);
2004-03-15 16:22:00 +00:00
return $r->data;
}
function _session_write($key, $value)
{
global $msg_buffer;
global $apidb_debug;
opendb();
if($msg_buffer)
2004-12-12 06:35:40 +00:00
$messages = implode("|", $msg_buffer);
2004-03-15 16:22:00 +00:00
else
2004-12-12 06:35:40 +00:00
$messages = "";
2004-03-15 16:22:00 +00:00
// remove single quotes
$value = str_replace("'", "", $value);
//DEBUGGING
if ($apidb_debug)
mysql_query("INSERT INTO debug VALUES(null, '$key = $messages')");
if(isset($_SESSION['current']))
2004-12-12 06:35:40 +00:00
mysql_query("REPLACE session_list VALUES ('$key', ".$_SESSION['current']->userid.", '".get_remote()."', '$value', '$messages', NOW())");
2004-03-15 16:22:00 +00:00
else
2004-12-12 06:35:40 +00:00
mysql_query("REPLACE session_list VALUES ('$key', 0, '".get_remote()."', null, '$messages', NOW())");
2004-03-15 16:22:00 +00:00
return true;
}
function _session_destroy($key)
{
mysql_query("DELETE FROM session_list WHERE session_id = '$key'");
return true;
}
function _session_gc($maxlifetime)
{
// delete sessions older than 2 days
mysql_query("DELETE FROM session_list WHERE to_days(now()) - to_days(stamp) >= 2");
return true;
}
session_set_save_handler("_session_open",
2004-12-12 06:35:40 +00:00
"_session_close",
"_session_read",
"_session_write",
"_session_destroy",
"_session_gc");
session_register($current);
?>