Procházet zdrojové kódy

Fix an odd circular loop in redirect.
If you have compose in new window off:
* close SquirrelMail session.
* go directly to webmail.php (causes redirect for login)
* in redirect.php, url was assigned: webmail.php?right_frame=webmail.php
which caused nested frameset.

Erin Schnabel před 22 roky
rodič
revize
f54e0fdf57
1 změnil soubory, kde provedl 11 přidání a 16 odebrání
  1. 11 16
      src/redirect.php

+ 11 - 16
src/redirect.php

@@ -154,23 +154,18 @@ if ($javascript_setting != SMPREF_JS_ON){
 setPref($data_dir, $username, 'javascript_on', $js_pref);
 
 /* Compute the URL to forward the user to. */
-    if (isset($_SESSION['session_expired_location'])) {
-	$session_expired_location= $_SESSION['session_expired_location'];
-    } else {
-	$session_expired_location=false;
-    }
-    if (isset($session_expired_location) && $session_expired_location) {
-       $compose_new_win = getPref($data_dir, $username, 'compose_new_win', 0);
-       if ($compose_new_win) {
-          $redirect_url = $session_expired_location;
-       } else {
-          $redirect_url = 'webmail.php?right_frame='.urldecode($session_expired_location);
-       }
-       sqsession_unregister('session_expired_location');
-       unset($session_expired_location);
-    } else {
-       $redirect_url = 'webmail.php';
+$redirect_url = 'webmail.php';
+
+if ( sqgetGlobalVar('session_expired_location', $session_expired_location, SQ_SESSION) ) {
+    sqsession_unregister('session_expired_location');
+    $compose_new_win = getPref($data_dir, $username, 'compose_new_win', 0);
+    if ($compose_new_win) {
+        $redirect_url = $session_expired_location;
+    } elseif ( strpos($session_expired_location, 'webmail.php') === FALSE ) {
+        $redirect_url = 'webmail.php?right_frame='.urldecode($session_expired_location);
     }
+    unset($session_expired_location);
+}
 
 /* Write session data and send them off to the appropriate page. */
 session_write_close();