summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--it_url.class12
1 files changed, 6 insertions, 6 deletions
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 "<a href='" . htmlspecialchars($url) . "'>" . htmlspecialchars($url) . "</a><br />" . it_debug::backtrace();
+ echo "<a href='" . htmlspecialchars($url) . "'>" . htmlspecialchars($url) . "</a> (HTTP/1.1 $code, $type redirect)<br />" . it_debug::backtrace();
else
- header('Location: ' . it_untaint($url, TC_SELF));
-
+ header('Location: ' . it_untaint($url, TC_SELF), true, $code);
exit;
}