diff options
Diffstat (limited to 'libs/Zend/Session.php')
-rw-r--r-- | libs/Zend/Session.php | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/libs/Zend/Session.php b/libs/Zend/Session.php index b5177c18fd..8b55a17b6d 100644 --- a/libs/Zend/Session.php +++ b/libs/Zend/Session.php @@ -491,6 +491,10 @@ class Zend_Session extends Zend_Session_Abstract self::regenerateId(); } + if (isset($_SESSION['data']) && is_string($_SESSION['data'])) { + $_SESSION = unserialize(base64_decode($_SESSION['data'])); + } + // run validators if they exist if (isset($_SESSION['__ZF']['VALID'])) { self::_processValidators(); @@ -688,8 +692,17 @@ class Zend_Session extends Zend_Session_Abstract parent::$_writable = false; } + if (isset($_SESSION)) { + $sessionBkp = $_SESSION; + $_SESSION = array('data' => base64_encode(serialize($_SESSION))); + } + session_write_close(); self::$_writeClosed = true; + + if (isset($sessionBkp)) { + $_SESSION = $sessionBkp; + } } |