91 lines
2.8 KiB
PHP
91 lines
2.8 KiB
PHP
<?php
|
|
require_once dirname(__FILE__).'/accesscheck.php';
|
|
|
|
# try to set the configuration
|
|
if (empty($GLOBALS["SessionTableName"])) return;
|
|
|
|
@ini_set("session.save_handler","user");
|
|
$SessionTableName = $GLOBALS["SessionTableName"];
|
|
|
|
if (ini_get("session.save_handler") == "user") {
|
|
session_set_save_handler (
|
|
'mysql_session_open',
|
|
'mysql_session_close',
|
|
'mysql_session_read',
|
|
'mysql_session_write',
|
|
'mysql_session_destroy',
|
|
'mysql_session_gc'
|
|
);
|
|
} else {
|
|
# @ini_set("session.save_handler","files");
|
|
}
|
|
|
|
if (!Sql_Table_exists($GLOBALS["SessionTableName"])) {
|
|
Sql_Create_Table($GLOBALS["SessionTableName"], array(
|
|
"sessionid" => array("CHAR(32) NOT NULL PRIMARY KEY",""),
|
|
"lastactive" => array("INTEGER NOT NULL",""),
|
|
"data" => array("LONGTEXT",""),
|
|
));
|
|
}
|
|
|
|
function mysql_session_open ($save_path, $session_name) {
|
|
return true;
|
|
}
|
|
|
|
function mysql_session_close() {
|
|
return true;
|
|
}
|
|
|
|
function mysql_session_read ($SessionID) {
|
|
# dbg("Reading session info for $SessionID");
|
|
$SessionTableName = $GLOBALS["SessionTableName"];
|
|
$SessionID = addslashes($SessionID);
|
|
|
|
$session_data_req = sql_query("SELECT data FROM $SessionTableName WHERE sessionid = '$SessionID'");
|
|
if (Sql_Affected_Rows() == 1) {
|
|
$data = Sql_Fetch_Row($session_data_req);
|
|
return $data[0];
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
function mysql_session_write ($SessionID, $val) {
|
|
# dbg("writing session info for $SessionID");
|
|
$SessionTableName = $GLOBALS["SessionTableName"];
|
|
$SessionID = addslashes($SessionID);
|
|
$val = addslashes($val);
|
|
|
|
$SessionExists = sql_fetch_row_query("select count(*) from $SessionTableName where sessionid = '$SessionID'");
|
|
if ($SessionExists[0] == 0) {
|
|
$retval = sql_query(sprintf('insert into %s (sessionid,lastactive,data) values("%s",UNIX_TIMESTAMP(NOW()),"%s")',
|
|
$SessionTableName,$SessionID,$val));
|
|
} else {
|
|
$retval = sql_query(sprintf('update %s SET data = "%s", lastactive = UNIX_TIMESTAMP(NOW()) where sessionid = "%s"',
|
|
$SessionTableName,$val,$SessionID));
|
|
if (mysql_affected_rows() < 0) {
|
|
logError("unable to update session data for session $SessionID");
|
|
sendError("unable to update session data for session $SessionID");
|
|
}
|
|
}
|
|
return $retval;
|
|
}
|
|
|
|
function mysql_session_destroy ($SessionID) {
|
|
$SessionTableName = $GLOBALS["SessionTableName"];
|
|
$SessionID = addslashes($SessionID);
|
|
$retval = sql_query("DELETE FROM $SessionTableName WHERE sessionid = '$SessionID'");
|
|
return $retval;
|
|
}
|
|
|
|
function mysql_session_gc ($maxlifetime = 300) {
|
|
$SessionTableName = $GLOBALS["SessionTableName"];
|
|
$CutoffTime = time() - $maxlifetime;
|
|
$retval = sql_query("DELETE FROM $SessionTableName WHERE lastactive < $CutoffTime");
|
|
return $retval;
|
|
}
|
|
|
|
|
|
|
|
?>
|