관리-도구
편집 파일: sessionlib.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; } ?>