From 086b8bd74b89931143340929cc349308411499a3 Mon Sep 17 00:00:00 2001
From: Christian Helbling
Date: Thu, 8 Sep 2011 09:53:28 +0000
Subject: add support for permanent redirect, change default/temporary redirect
from 302 to 303 which is what is usually meant and is the (incorrect)
behaviour of most clients on a 302
---
it_url.class | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
(limited to 'it_url.class')
diff --git a/it_url.class b/it_url.class
index ff189c1..56aa182 100644
--- a/it_url.class
+++ b/it_url.class
@@ -677,18 +677,18 @@ function absolute($url=null)
/**
* Craft a valid redirect URL, send Location: header and terminate execution
- * @param $url Optional URL ( foo.html, /foo.html, //host/bar.html, http://host/bar.html ), default self
+ * @param $url Optional URL ( foo.html, /foo.html, //host/bar.html, http://host/bar.html ), default self
+ * @param $type Type of redirect, "temporary" or "permanent", default temporary
* @return This method never returns.
*/
-function redirect($url = null)
+function redirect($url = null, $type = "temporary")
{
$url = preg_replace("/[\r\n].*/", '', it_url::absolute($url)); # Security: cut after CR/LF
-
+ $code = substr($type, 0, 4) == "perm" ? 301 : 303; # NOTE: HTTP 303 is called "See Other", rather than Temporary (which would be HTTP 307), but is the behaviour one usually wants for temporary redirects
if (EDC('noredir'))
- echo "" . htmlspecialchars($url) . "
" . it_debug::backtrace();
+ echo "" . htmlspecialchars($url) . " (HTTP/1.1 $code, $type redirect)
" . it_debug::backtrace();
else
- header('Location: ' . it_untaint($url, TC_SELF));
-
+ header('Location: ' . it_untaint($url, TC_SELF), true, $code);
exit;
}
--
cgit v1.2.3