diff --git a/application/loginform.class.inc.php b/application/loginform.class.inc.php index 1ba4c4590..51f1e3832 100644 --- a/application/loginform.class.inc.php +++ b/application/loginform.class.inc.php @@ -31,7 +31,7 @@ class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension */ protected function OnReadCredentials(&$iErrorCode) { - if (Session::Get('login_mode') == 'form') { + if (!Session::IsSet('login_mode') || Session::Get('login_mode') == 'form') { $sAuthUser = utils::ReadPostedParam('auth_user', '', 'raw_data'); $sAuthPwd = utils::ReadPostedParam('auth_pwd', null, 'raw_data'); if ($this->bForceFormOnError || empty($sAuthUser) || empty($sAuthPwd)) @@ -51,9 +51,10 @@ class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension $this->bForceFormOnError = false; exit; } - + Session::Start(); Session::Set('login_temp_auth_user', $sAuthUser); Session::Set('login_mode', 'form'); + Session::WriteClose(); } return LoginWebPage::LOGIN_FSM_CONTINUE; } diff --git a/sources/application/Helper/Session.php b/sources/application/Helper/Session.php index dec7f4c31..970803475 100644 --- a/sources/application/Helper/Session.php +++ b/sources/application/Helper/Session.php @@ -55,7 +55,8 @@ class Session */ public static function Set($key, $value) { - $sSessionVar = &$_SESSION; + $aSession = $_SESSION; + $sSessionVar = &$aSession; if (is_array($key)) { foreach ($key as $sKey) { $sSessionVar = &$sSessionVar[$sKey]; @@ -63,12 +64,13 @@ class Session } else { $sSessionVar = &$sSessionVar[$key]; } + $sSessionVar = $value; if (!self::$bSessionStarted) { self::Start(); - $sSessionVar = $value; + $_SESSION = $aSession; self::WriteClose(); } else { - $sSessionVar = $value; + $_SESSION = $aSession; } } @@ -111,7 +113,8 @@ class Session */ public static function Get($key, $default = null) { - $sSessionVar = &$_SESSION; + $aSession = $_SESSION; + $sSessionVar = &$aSession; if (is_array($key)) { foreach ($key as $SKey) { $sSessionVar = &$sSessionVar[$SKey]; @@ -134,7 +137,8 @@ class Session */ public static function IsSet($key): bool { - $sSessionVar = &$_SESSION; + $aSession = $_SESSION; + $sSessionVar = &$aSession; if (is_array($key)) { foreach ($key as $SKey) { $sSessionVar = &$sSessionVar[$SKey];