diff --git a/inc/actions.php b/inc/actions.php
index 2faf8bfcaa86ef72cbba2a7f7e40e4ed45999119..41e81e2675692ea725b2852bf7e3f6404d8d2d7b 100644
--- a/inc/actions.php
+++ b/inc/actions.php
@@ -312,9 +312,24 @@ function act_save($act){
   return 'show';
 }
 
+/**
+ * Do a redirect after receiving post data
+ *
+ * Tries to add the section id as hash mark after section editing
+ */
 function act_redirect($id,$preact){
   global $PRE;
   global $TEXT;
+  global $MSG;
+
+  //are there any undisplayed messages? keep them in session for display
+  //on the next page
+  if(isset($MSG) && count($MSG)){
+    //reopen session, store data and close session again
+    @session_start();
+    $_SESSION[DOKU_COOKIE]['msg'] = $MSG;
+    session_write_close();
+  }
 
   //get section name when coming from section edit
   if($PRE && preg_match('/^\s*==+([^=\n]+)/',$TEXT,$match)){
diff --git a/inc/init.php b/inc/init.php
index def5d7997fe9a79dc1297b104fbae35bada96cce..6c3f54e16e41812b66fcb3bff07bc8d790e2d22a 100644
--- a/inc/init.php
+++ b/inc/init.php
@@ -118,6 +118,12 @@
       session_set_cookie_params(0,DOKU_REL,'',($conf['securecookie'] && is_ssl()));
     }
     session_start();
+
+    // load left over messages
+    if(isset($_SESSION[DOKU_COOKIE]['msg'])){
+      $MSG = $_SESSION[DOKU_COOKIE]['msg'];
+      unset($_SESSION[DOKU_COOKIE]['msg']);
+    }
   }
 
   // kill magic quotes