diff options
Diffstat (limited to 'it_url.class')
-rw-r--r-- | it_url.class | 12 |
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; } |