X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FSession.php;h=57939665f424113bdca304c9484f20885b2c403b;hb=82a7f74580e2d0d5197766666bccd7273a2c96ee;hp=dcbe3a7823c04a015877b385711a11156126ef1e;hpb=44bc4f0c398b4c64cdd5c7a5000b653e6d281726;p=civicrm-core.git diff --git a/CRM/Core/Session.php b/CRM/Core/Session.php index dcbe3a7823..57939665f4 100644 --- a/CRM/Core/Session.php +++ b/CRM/Core/Session.php @@ -41,13 +41,6 @@ class CRM_Core_Session { */ protected $_session = NULL; - /** - * Current php Session ID : needed to detect if the session is changed - * - * @var string - */ - protected $sessionID; - /** * We only need one instance of this object. So we use the singleton * pattern and cache the instance in this variable @@ -128,10 +121,9 @@ class CRM_Core_Session { * Is this a read operation, in this case, the session will not be touched. */ public function initialize($isRead = FALSE) { - // remove $_SESSION reference if session is changed - if (($sid = session_id()) !== $this->sessionID) { - $this->_session = NULL; - $this->sessionID = $sid; + // reset $this->_session in case if it is no longer a reference to $_SESSION; + if (isset($_SESSION) && isset($this->_session) && $_SESSION !== $this->_session) { + unset($this->_session); } // lets initialize the _session variable just before we need it // hopefully any bootstrapping code will actually load the session from the CMS @@ -171,9 +163,9 @@ class CRM_Core_Session { unset($this->_session[$this->_key]); } else { - $this->_session = []; + $this->_session[$this->_key] = []; + unset($this->_session); } - } /**