From 42a644847dc2091485d8980e82986d9c155016ef Mon Sep 17 00:00:00 2001 From: Christian Schneider Date: Thu, 8 Sep 2011 17:00:51 +0000 Subject: Enforce parameter of it_url::redirect to be either 'permanent' or 'temporary' --- it_url.class | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'it_url.class') diff --git a/it_url.class b/it_url.class index 56aa182..5a65f12 100644 --- a/it_url.class +++ b/it_url.class @@ -683,10 +683,13 @@ function absolute($url=null) */ function redirect($url = null, $type = "temporary") { + $codes = array('permanent' => 301, 'temporary' => 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 (!($code = $codes[$type])) + it::fatal("Invalid redirect type '$type', must be 'permanent' or '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) . " (HTTP/1.1 $code, $type redirect)
" . it_debug::backtrace(); + echo "" . htmlspecialchars($url) . " (HTTP/1.1 $code, $type redirect)
Trace: " . it_debug::backtrace(); else header('Location: ' . it_untaint($url, TC_SELF), true, $code); exit; -- cgit v1.2.3