소스 검색

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 21 년 전
부모
커밋
b1f7afe1fc
2개의 변경된 파일33개의 추가작업 그리고 12개의 파일을 삭제
  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
   - 'Priority' and 'Importance' headers are now also recognised, next to the
     '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
 --------------------

+ 31 - 12
src/signout.php

@@ -18,21 +18,40 @@
  */
 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/strings.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"' )
 ?>
 </body>
-</html>
+</html>