]> git.datanom.net - qtadmin.git/blobdiff - lib/utils.inc.php
Add check for valid session
[qtadmin.git] / lib / utils.inc.php
index be2ccf9bdebc1acf31c3d45eee10155dfdeba848..fadc39717c3626343508d9929cd1461388c1f6b8 100644 (file)
@@ -63,15 +63,17 @@ class Utils {
         global $CFG;
 
         if (isset($CFG->session_timeout)) {
-            $this->timeout = $CFG->session_timeout * 60;
+            $this->settings['timeout'] = $CFG->session_timeout * 60;
         } else {
-            $this->timeout = 20 * 60;
+            $this->settings['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);
+        if (ini_get('session.gc_maxlifetime') != $this->settings['timeout'])
+            ini_set('session.gc_maxlifetime', $this->settings['timeout']);
+        if (ini_get('session.cookie_lifetime') != $this->settings['timeout'])
+            ini_set('session.cookie_lifetime', $this->settings['timeout']);
+
+        $_SESSION['settings'] = $this->settings;
 
         session_start();
     }
@@ -79,6 +81,10 @@ class Utils {
     private function checkSession() {
         global $CFG;
 
+        if ('' == session_id()) {
+            $this->startSession();
+        }
+
         $time = $_SERVER['REQUEST_TIME'];
         if (isset($_SESSION['LAST_ACTIVITY']) &&
                 ($time - $_SESSION['LAST_ACTIVITY']) >= $this->settings['timeout']) {
@@ -90,15 +96,18 @@ class Utils {
     }
 
     public function logout() {
-        $_SESSION = array();
         if (ini_get('session.use_cookies')) {
             $params = session_get_cookie_params();
             setcookie(session_name(), '', time() - 42000,
                 $params['path'], $params['domain'],
                 $params['secure'], $params['httponly']);
         }
-        session_unset();
-        session_destroy();
+
+        if ('' != session_id()) {
+            $_SESSION = array();
+            session_unset();
+            session_destroy();
+        }
         $this->settings = array();
     }
 
@@ -182,6 +191,8 @@ class Utils {
             $this->startSession();
         }
 
+        $this->checkSession();
+
         if (isset($this->settings['user'])) {
             if ($this->settings['user'] != null) {
                 $loggedIn = true;
@@ -196,7 +207,7 @@ class Utils {
         }
 
         if ($loggedIn == false) {
-            echo '$this->user: '.$this->user.' $_SESSION[\'user\']: '.$_SESSION['user'];
+            echo '$this->settings: '.var_export($this->settings, true);
             echo 'R_TIME: '.date('c', $_SERVER['REQUEST_TIME']).' L_ACT: '.date('c', $_SESSION['LAST_ACTIVITY']);
             //exit;
         }
This page took 0.039612 seconds and 5 git commands to generate.