From: pdontthink Date: Mon, 27 Aug 2007 07:40:20 +0000 (+0000) Subject: Clarify and simplify how session is destroyed and separate from session restore mechanism X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=5cf2734273857ac74e5bd6a63ae84b6c83a64d97;p=squirrelmail.git Clarify and simplify how session is destroyed and separate from session restore mechanism git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@12606 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- diff --git a/src/login.php b/src/login.php index 5122421a..2eaea9e2 100644 --- a/src/login.php +++ b/src/login.php @@ -34,19 +34,28 @@ set_up_language($squirrelmail_language, TRUE, TRUE); * In case the last session was not terminated properly, make sure * we get a new one, but make sure we preserve session_expired_* */ -if ( !empty($_SESSION['session_expired_post']) && !empty($_SESSION['session_expired_location']) ) { - $sep = $_SESSION['session_expired_post']; - $sel = $_SESSION['session_expired_location']; +$sep = ''; +$sel = ''; +sqGetGlobalVar('session_expired_post', $sep, SQ_SESSION); +sqGetGlobalVar('session_expired_location', $sel, SQ_SESSION); - sqsession_destroy(); - @sqsession_is_active(); - $_SESSION=array(); +/* blow away session */ +sqsession_destroy(); + +/** + * in some rare instances, the session seems to stick + * around even after destroying it (!!), so if it does, + * we'll manually flatten the $_SESSION data + */ +if (!empty($_SESSION)) { + $_SESSION = array(); +} + +/* start session and put session_expired_* variables back in session */ +@sqsession_is_active(); +if (!empty($sep) && !empty($sel)) { sqsession_register($sep, 'session_expired_post'); sqsession_register($sel, 'session_expired_location'); -} else { - sqsession_destroy(); - @sqsession_is_active(); - $_SESSION=array(); } /** @@ -160,7 +169,7 @@ $login_extra = addHidden('js_autodetect_results', SMPREF_JS_OFF). session_write_close(); -$oTemplate->assign('logo_str', $logo_str); +$oTemplate->assign('logo_str', $logo_str, FALSE); $oTemplate->assign('logo_path', $org_logo); $oTemplate->assign('sm_attribute_str', $sm_attribute_str); // i18n: The %s represents the service provider's name @@ -168,7 +177,7 @@ $oTemplate->assign('org_name_str', sprintf (_("%s Login"), $org_name)); // i18n: The %s represents the service provider's name $oTemplate->assign('org_logo_str', sprintf (_("The %s logo"), $org_name)); $oTemplate->assign('login_field_value', $loginname_value); -$oTemplate->assign('login_extra', $login_extra); +$oTemplate->assign('login_extra', $login_extra, FALSE); //FIXME: need to remove *ALL* HTML from this file! echo ''."\n";