Browse Source

When you reload signout.php you get an error that you have to be logged in
to view the signout page. This is of course silly, if you're already logged
out this page should be a 'no-op' that just presents the same message.

Thijs Kinkhorst 20 years ago
parent
commit
b1f7afe1fc
2 changed files with 33 additions and 12 deletions
  1. 2 0
      ChangeLog
  2. 31 12
      src/signout.php

+ 2 - 0
ChangeLog

@@ -158,6 +158,8 @@ Version 1.5.1 -- CVS
   - Fix two time zone calculation bugs, thanks to David White
   - Fix two time zone calculation bugs, thanks to David White
   - 'Priority' and 'Importance' headers are now also recognised, next to the
   - 'Priority' and 'Importance' headers are now also recognised, next to the
     'X-Priority' header that we've supported since a long time.
     'X-Priority' header that we've supported since a long time.
+  - Handle a reload of the signout page gracefully: do not present an error
+    about having to be logged in to be able to sign out.
 
 
 Version 1.5.0
 Version 1.5.0
 --------------------
 --------------------

+ 31 - 12
src/signout.php

@@ -18,21 +18,40 @@
  */
  */
 define('SM_PATH','../');
 define('SM_PATH','../');
 
 
-/* SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
-require_once(SM_PATH . 'functions/prefs.php');
+/* check if we're already logged out (e.g. when this page is reloaded),
+ * so we can skip to the output and not give error messages */
+if( ! isset($_SESSION) || empty($_SESSION['user_is_logged_in']) ) {
+    $loggedin = false;
+} else {
+    $loggedin = true;
+}
+
+if($loggedin) {
+    require_once(SM_PATH . 'include/validate.php');
+    require_once(SM_PATH . 'functions/prefs.php');
+} else {
+    // this comes in through validate.php usually
+    require_once(SM_PATH . 'config/config.php');
+    require_once(SM_PATH . 'functions/i18n.php');
+    require_once(SM_PATH . 'functions/page_header.php');
+    if (@file_exists($theme[$theme_default]['PATH'])) {
+        @include ($theme[$theme_default]['PATH']);
+    }
+}
 require_once(SM_PATH . 'functions/plugin.php');
 require_once(SM_PATH . 'functions/plugin.php');
 require_once(SM_PATH . 'functions/strings.php');
 require_once(SM_PATH . 'functions/strings.php');
 require_once(SM_PATH . 'functions/html.php');
 require_once(SM_PATH . 'functions/html.php');
 
 
-/* Erase any lingering attachments */
-if (isset($attachments) && is_array($attachments)
-    && sizeof($attachments)){
-    $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
-    foreach ($attachments as $info) {
-        $attached_file = "$hashed_attachment_dir/$info[localfilename]";
-        if (file_exists($attached_file)) {
-            unlink($attached_file);
+if($loggedin) {
+    /* Erase any lingering attachments */
+    if (isset($attachments) && is_array($attachments)
+        && sizeof($attachments)){
+        $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
+        foreach ($attachments as $info) {
+            $attached_file = "$hashed_attachment_dir/$info[localfilename]";
+            if (file_exists($attached_file)) {
+                unlink($attached_file);
+            }
         }
         }
     }
     }
 }
 }
@@ -94,4 +113,4 @@ html_tag( 'table',
 'center', $color[4], 'width="50%" cols="1" cellpadding="2" cellspacing="0" border="0"' )
 'center', $color[4], 'width="50%" cols="1" cellpadding="2" cellspacing="0" border="0"' )
 ?>
 ?>
 </body>
 </body>
-</html>
+</html>