Przeglądaj źródła

Suppress SID constant notices in older PHP versions.

tokul 19 lat temu
rodzic
commit
e44b81b3e7
3 zmienionych plików z 9 dodań i 9 usunięć
  1. 7 0
      functions/global.php
  2. 1 8
      src/login.php
  3. 1 1
      src/redirect.php

+ 7 - 0
functions/global.php

@@ -218,6 +218,13 @@ function sqgetGlobalVar($name, &$value, $search = SQ_INORDER, $default = NULL, $
 /**
  * Deletes an existing session, more advanced than the standard PHP
  * session_destroy(), it explicitly deletes the cookies and global vars.
+ *
+ * WARNING: Older PHP versions have some issues with session management.
+ * See http://bugs.php.net/11643 (warning, spammed bug tracker) and 
+ * http://bugs.php.net/13834. SID constant is not destroyed in PHP 4.1.2,
+ * 4.2.3 and maybe other versions. If you restart session after session 
+ * is destroyed, affected PHP versions produce PHP notice. Bug should 
+ * be fixed only in 4.3.0
  */
 function sqsession_destroy() {
 

+ 1 - 8
src/login.php

@@ -35,19 +35,12 @@ set_up_language($squirrelmail_language, TRUE, TRUE);
  * In case the last session was not terminated properly, make sure
  * we get a new one, but make sure we preserve session_expired_*
  */
-/**
- * PHP bug. http://bugs.php.net/11643 (warning, spammed bug tracker) and
- * http://bugs.php.net/13834
- * SID constant is not destroyed in PHP 4.1.2, 4.2.3 and maybe other
- * versions. Produces warning on login page. Bug should be fixed only in 4.3.0
- */
 if ( !empty($_SESSION['session_expired_post']) && !empty($_SESSION['session_expired_location']) ) {
     $sep = $_SESSION['session_expired_post'];
     $sel = $_SESSION['session_expired_location'];
 
     sqsession_destroy();
-  
-    sqsession_is_active();
+    @sqsession_is_active();
     $_SESSION=array();
     sqsession_register($sep, 'session_expired_post');
     sqsession_register($sel, 'session_expired_location');

+ 1 - 1
src/redirect.php

@@ -70,7 +70,7 @@ if (!sqsession_is_registered('user_is_logged_in')) {
 
     /* regenerate the session id to avoid session hyijacking */
     sqsession_destroy();
-    sqsession_is_active();
+    @sqsession_is_active();
     session_regenerate_id();
     /**
      * The cookie part. session_start and session_regenerate_session normally set