mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-03 04:55:36 +02:00
[ticket/11997] Fix redirects from inside controllers
The redirect url currently uses the web root path. However as we prepend the full board url later, we need to remove the relative web root path and prepend the normal root path again. Otherwise redirects from inside routes will not work as intended. PHPBB3-11997
This commit is contained in:
parent
d43542a434
commit
0a7db81426
@ -2662,6 +2662,16 @@ function redirect($url, $return = false, $disable_cd_check = false)
|
||||
// Make sure no &'s are in, this will break the redirect
|
||||
$url = str_replace('&', '&', $url);
|
||||
|
||||
// The url currently uses the web root path.
|
||||
// However as we prepend the full board url later,
|
||||
// we need to remove the relative web root path and
|
||||
// prepend the normal root path again. Otherwise redirects
|
||||
// from inside routes will not work as intended.
|
||||
if ($phpbb_path_helper instanceof \phpbb\path_helper)
|
||||
{
|
||||
$url = $phpbb_path_helper->remove_web_root_path($url);
|
||||
}
|
||||
|
||||
// Determine which type of redirect we need to handle...
|
||||
$url_parts = @parse_url($url);
|
||||
|
||||
|
@ -101,6 +101,27 @@ class path_helper
|
||||
return $path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Strips away the web root path and prepends the normal root path
|
||||
*
|
||||
* This replaces get_web_root_path() . some_url with
|
||||
* $phpbb_root_path . some_url
|
||||
*
|
||||
* @param string $path The path to be updated
|
||||
* @return string
|
||||
*/
|
||||
public function remove_web_root_path($path)
|
||||
{
|
||||
if (strpos($path, $this->get_web_root_path()) === 0)
|
||||
{
|
||||
$path = substr($path, strlen($this->get_web_root_path()));
|
||||
|
||||
return $this->phpbb_root_path . $path;
|
||||
}
|
||||
|
||||
return $path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a relative root path from the current URL
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user