]> git.datanom.net - qtadmin.git/blobdiff - lib/utils.inc.php
Fix bug in session handler
[qtadmin.git] / lib / utils.inc.php
index 2f1671dcc8c867c37b0da0b718d7e796b457dd34..8aa38e083054ae3d3a2e6d6e733d483d5f2b8d90 100644 (file)
@@ -18,11 +18,12 @@ class Utils {
         var timeout = __TIMEOUT__;
     </script>
     <script src="__ROOT__js/timer.js"></script>
+    <script src="__ROOT__js/checkbox.js"></script>
     <title>__TITLE__</title>
 </head>
 <body>';
-    private $footer = '<p class="footer">Powered by <a href="https://qtadmin.datanom.net">
-            QtAdmin</a>. &copy; 2015 by Michael Rasmussen</p></body></html>';
+    private $footer = '<p class="footer">Powered by <a href="https://qtadmin.datanom.net"
+            title="Goto QtAdmin homepage">QtAdmin</a>. &copy; 2015 by Michael Rasmussen</p></body></html>';
     private $heading = '<p id="time" class="time">Session timeout:
             <span id="timer"></span></p><h1 class="h1">__TITLE__</h1>';
 
@@ -30,12 +31,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,15 +58,9 @@ class Utils {
 
     private function __clone() {}
 
-    public static function getInstance() {
+    private function startSession() {
         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 {
@@ -75,15 +71,24 @@ class Utils {
             ini_set('session.gc_maxlifetime', $timeout);
         if (ini_get('session.cookie_lifetime') != $timeout)
             ini_set('session.cookie_lifetime', $timeout);
+
+        session_start();
+
         $time = $_SERVER['REQUEST_TIME'];
         if (isset($_SESSION['LAST_ACTIVITY']) && ($time - $_SESSION['LAST_ACTIVITY']) >= $timeout) {
             session_unset();
             session_destroy();
-            session_start();
             self::$_instance->user = null;
             self::$_instance->is_admin = false;
+        } else {
+            $_SESSION['LAST_ACTIVITY'] = $time;
+        }
+    }
+
+    public static function getInstance() {
+        if (!is_object(self::$_instance)) {
+            self::$_instance = new Utils();
         }
-        $_SESSION['LAST_ACTIVITY'] = $time;
 
         return self::$_instance;
     }
This page took 0.031562 seconds and 5 git commands to generate.