X-Git-Url: http://git.datanom.net/qtadmin.git/blobdiff_plain/b706c65f2c5aed113735217c0728771f21f6e45a..c05192963fbae8838cc9210487dfffce5aa05ccb:/lib/utils.inc.php diff --git a/lib/utils.inc.php b/lib/utils.inc.php index dca39a6..27cb00b 100644 --- a/lib/utils.inc.php +++ b/lib/utils.inc.php @@ -9,6 +9,7 @@ class Utils { private $user; private $is_admin; private $loginStatus; + private $timeout; private $header = ' @@ -18,6 +19,7 @@ class Utils { var timeout = __TIMEOUT__; + __TITLE__ '; @@ -30,12 +32,13 @@ class Utils { global $CFG; $this->server = $_SERVER; - session_start(); $this->user = null; $this->is_admin = false; $this->loginStatus = 'Not logged in'; + $this->startSession(); + if (isset($_SESSION['user'])) { $this->user = $_SESSION['user']; $this->loginStatus = 'OK'; @@ -56,34 +59,43 @@ class Utils { private function __clone() {} + private function startSession() { + global $CFG; + + if (isset($CFG->session_timeout)) { + $this->timeout = $CFG->session_timeout * 60; + } else { + $this->timeout = 20 * 60; + } + + if (ini_get('session.gc_maxlifetime') != $this->timeout) + ini_set('session.gc_maxlifetime', $this->timeout); + if (ini_get('session.cookie_lifetime') != $this->timeout) + ini_set('session.cookie_lifetime', $this->timeout); + + session_start(); + + //echo ini_get('session.gc_maxlifetime').':'.ini_get('session.cookie_lifetime'); + } + public static function getInstance() { global $CFG; if (!is_object(self::$_instance)) { self::$_instance = new Utils(); } - // Session timeout handler - if ('' == session_id()) - session_start(); - if (isset($CFG->session_timeout)) { - $timeout = $CFG->session_timeout * 60; - } else { - $timeout = 20 * 60; - } - if (ini_get('session.gc_maxlifetime') != $timeout) - ini_set('session.gc_maxlifetime', $timeout); - if (ini_get('session.cookie_lifetime') != $timeout) - ini_set('session.cookie_lifetime', $timeout); $time = $_SERVER['REQUEST_TIME']; - if (isset($_SESSION['LAST_ACTIVITY']) && ($time - $_SESSION['LAST_ACTIVITY']) >= $timeout) { + if (isset($_SESSION['LAST_ACTIVITY']) && + ($time - $_SESSION['LAST_ACTIVITY']) >= self::$_instance->timeout) { + echo 'R_TIME: '.date('c', $time).' L_ACT: '.date('c', $_SESSION['LAST_ACTIVITY']); session_unset(); session_destroy(); - session_start(); self::$_instance->user = null; self::$_instance->is_admin = false; + } else { + $_SESSION['LAST_ACTIVITY'] = $time; } - $_SESSION['LAST_ACTIVITY'] = $time; return self::$_instance; }