diff --git a/public/seminar_main.php b/public/seminar_main.php index 7958a7f5e09bc3e102b4973a8dcbb14efac2952c..0e7eed1e9ea862658a3c2fe8d81c08719fcb88b8 100644 --- a/public/seminar_main.php +++ b/public/seminar_main.php @@ -62,17 +62,13 @@ if (Request::get('auswahl')) { // gibt es eine Anweisung zur Umleitung? -if (Request::get('redirect_to')) { - $query_parts = explode('&', mb_stristr(urldecode($_SERVER['QUERY_STRING']), 'redirect_to')); - list( , $where_to) = explode('=', array_shift($query_parts)); - $new_query = $where_to . '?' . join('&', $query_parts); - $new_query = preg_replace('/[^:0-9a-z+_.#?&=\/-]/i', '', $new_query); - - if (preg_match('~^(\w+:)?//~', $new_query) && !is_internal_url($new_query)) { +$redirect_to = Request::get('redirect_to'); +if ($redirect_to) { + if (!is_internal_url($redirect_to)) { throw new Exception('Invalid redirection'); } - header('Location: '.URLHelper::getURL($new_query, ['cid' => $course_id])); + header('Location: '.URLHelper::getURL($redirect_to, ['cid' => $course_id])); die; }