summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--inc/actions.php3
-rw-r--r--inc/common.php21
-rw-r--r--inc/media.php3
-rw-r--r--inc/pageutils.php2
4 files changed, 24 insertions, 5 deletions
diff --git a/inc/actions.php b/inc/actions.php
index bebdeefce..6d7859b6a 100644
--- a/inc/actions.php
+++ b/inc/actions.php
@@ -357,8 +357,7 @@ function act_redirect_execute($opts){
if($opts['fragment']) $go .= '#'.$opts['fragment'];
//show it
- header("Location: $go");
- exit();
+ send_redirect($go);
}
/**
diff --git a/inc/common.php b/inc/common.php
index 606f107b7..817e416b0 100644
--- a/inc/common.php
+++ b/inc/common.php
@@ -1454,4 +1454,25 @@ function is_mem_available($mem,$bytes=1048576){
return true;
}
+/**
+ * Send a HTTP redirect to the browser
+ *
+ * Works arround Microsoft IIS cookie sending bug. Exits the script.
+ *
+ * @link http://support.microsoft.com/kb/q176113/
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function send_redirect($url){
+ // check if running on IIS < 6 with CGI-PHP
+ if( isset($_SERVER['SERVER_SOFTWARE']) && isset($_SERVER['GATEWAY_INTERFACE']) &&
+ (strpos($_SERVER['GATEWAY_INTERFACE'],'CGI') !== false) &&
+ (preg_match('|^Microsoft-IIS/(\d)\.\d$|', trim($_SERVER['SERVER_SOFTWARE']), $matches)) &&
+ $matches[1] < 6 ){
+ header('Refresh: 0;url='.$url);
+ }else{
+ header('Location: '.$url);
+ }
+ exit;
+}
+
//Setup VIM: ex: et ts=2 enc=utf-8 :
diff --git a/inc/media.php b/inc/media.php
index 37f73208c..c932a07d4 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -201,9 +201,8 @@ function media_delete($id,$auth){
if($data['unl'] && $data['del']){
// current namespace was removed. redirecting to root ns passing msg along
- header('Location: '.DOKU_URL.'lib/exe/mediamanager.php?msg1='.
+ send_redirect(DOKU_URL.'lib/exe/mediamanager.php?msg1='.
rawurlencode(sprintf(noNS($id),$lang['deletesucc'])));
- exit;
}
return $data['unl'];
diff --git a/inc/pageutils.php b/inc/pageutils.php
index 4a62244dc..d3d9478ca 100644
--- a/inc/pageutils.php
+++ b/inc/pageutils.php
@@ -68,7 +68,7 @@ function getID($param='id',$clean=true){
// fall back to default
$id = $id.$conf['start'];
}
- header("Location: ".wl($id,'',true));
+ send_redirect("Location: ".wl($id,'',true));
}
if($clean) $id = cleanID($id);