diff --git a/core-bundle/src/Resources/contao/modules/ModuleLogin.php b/core-bundle/src/Resources/contao/modules/ModuleLogin.php index 33a93561dfa..4bed045a7e5 100644 --- a/core-bundle/src/Resources/contao/modules/ModuleLogin.php +++ b/core-bundle/src/Resources/contao/modules/ModuleLogin.php @@ -35,6 +35,11 @@ class ModuleLogin extends Module */ protected $strFlashType = 'contao.FE.error'; + /** + * @var string + */ + private $targetPath = ''; + /** * Display a login form * @@ -56,7 +61,11 @@ public function generate() if (!$_POST && $this->redirectBack && ($strReferer = $this->getReferer()) != Environment::get('request')) { - $_SESSION['LAST_PAGE_VISITED'] = $strReferer; + $this->targetPath = Environment::get('base') . $strReferer; + } + else + { + $this->targetPath = (string) Input::post('_target_path'); } return parent::generate(); @@ -82,9 +91,9 @@ protected function compile() $strRedirect = Environment::get('base').Environment::get('request'); // Redirect to last page visited - if ($this->redirectBack && $_SESSION['LAST_PAGE_VISITED'] != '') + if ($this->redirectBack && $this->targetPath) { - $strRedirect = Environment::get('base').$_SESSION['LAST_PAGE_VISITED']; + $strRedirect = $this->targetPath; } // Redirect home if the page is protected @@ -125,10 +134,10 @@ protected function compile() $strRedirect = Environment::get('base').Environment::get('request'); // Redirect to the last page visited - if ($this->redirectBack && $_SESSION['LAST_PAGE_VISITED'] != '') + if ($this->redirectBack && $this->targetPath) { $blnRedirectBack = true; - $strRedirect = $_SESSION['LAST_PAGE_VISITED']; + $strRedirect = $this->targetPath; } // Redirect to the jumpTo page diff --git a/core-bundle/src/Resources/contao/modules/ModuleLogout.php b/core-bundle/src/Resources/contao/modules/ModuleLogout.php index a1c273ad2ce..fa19ac52486 100644 --- a/core-bundle/src/Resources/contao/modules/ModuleLogout.php +++ b/core-bundle/src/Resources/contao/modules/ModuleLogout.php @@ -52,19 +52,13 @@ public function generate() return $objTemplate->parse(); } - // Set last page visited - if ($this->redirectBack) - { - $_SESSION['LAST_PAGE_VISITED'] = $this->getReferer(); - } - $strLogoutUrl = System::getContainer()->get('security.logout_url_generator')->getLogoutUrl(); $strRedirect = Environment::get('base'); // Redirect to last page visited - if ($this->redirectBack && !empty($_SESSION['LAST_PAGE_VISITED'])) + if ($this->redirectBack && ($strReferer = $this->getReferer())) { - $strRedirect = $_SESSION['LAST_PAGE_VISITED']; + $strRedirect = $strReferer; } // Redirect to jumpTo page diff --git a/core-bundle/src/Resources/contao/pages/PageLogout.php b/core-bundle/src/Resources/contao/pages/PageLogout.php index 6526f043b54..1ef6767ab8d 100644 --- a/core-bundle/src/Resources/contao/pages/PageLogout.php +++ b/core-bundle/src/Resources/contao/pages/PageLogout.php @@ -31,19 +31,13 @@ class PageLogout extends Frontend */ public function getResponse($objPage) { - // Set last page visited - if ($objPage->redirectBack) - { - $_SESSION['LAST_PAGE_VISITED'] = $this->getReferer(); - } - $strLogoutUrl = System::getContainer()->get('security.logout_url_generator')->getLogoutUrl(); $strRedirect = Environment::get('base'); // Redirect to last page visited - if ($objPage->redirectBack && !empty($_SESSION['LAST_PAGE_VISITED'])) + if ($objPage->redirectBack && ($strReferer = $this->getReferer())) { - $strRedirect = $_SESSION['LAST_PAGE_VISITED']; + $strRedirect = $strReferer; } // Redirect to jumpTo page