public static function Init() { if (CSecuritySessionVirtual::isStorageEnabled()) { if (!CSecuritySessionVirtual::init()) { self::triggerFatalError("Failed to initialize Virtual session handler"); } //may return false with session.auto_start is set to On if (session_set_save_handler(array("CSecuritySessionVirtual", "open"), array("CSecuritySessionVirtual", "close"), array("CSecuritySessionVirtual", "read"), array("CSecuritySessionVirtual", "write"), array("CSecuritySessionVirtual", "destroy"), array("CSecuritySessionVirtual", "gc"))) { register_shutdown_function("session_write_close"); } } elseif (CSecuritySessionMC::isStorageEnabled()) { if (!CSecuritySessionMC::Init()) { self::triggerFatalError("Failed to initialize Memcache session handler"); } //may return false with session.auto_start is set to On if (session_set_save_handler(array("CSecuritySessionMC", "open"), array("CSecuritySessionMC", "close"), array("CSecuritySessionMC", "read"), array("CSecuritySessionMC", "write"), array("CSecuritySessionMC", "destroy"), array("CSecuritySessionMC", "gc"))) { register_shutdown_function("session_write_close"); } } else { if (!CSecuritySessionDB::Init()) { self::triggerFatalError("Failed to initialize DB session handler"); } //may return false with session.auto_start is set to On if (session_set_save_handler(array("CSecuritySessionDB", "open"), array("CSecuritySessionDB", "close"), array("CSecuritySessionDB", "read"), array("CSecuritySessionDB", "write"), array("CSecuritySessionDB", "destroy"), array("CSecuritySessionDB", "gc"))) { register_shutdown_function("session_write_close"); } } }
/** * @return string */ public static function CleanUpAgent() { $maxlifetime = intval(ini_get("session.gc_maxlifetime")); if ($maxlifetime && !CSecuritySessionMC::isStorageEnabled()) { CSecuritySessionDB::gc($maxlifetime); } return self::GC_AGENT_NAME; }
function Init() { if (defined("BX_SECURITY_SESSION_MEMCACHE_HOST") && CSecuritySessionMC::Init()) { //may return false with session.auto_start is set to On if (session_set_save_handler(array("CSecuritySessionMC", "open"), array("CSecuritySessionMC", "close"), array("CSecuritySessionMC", "read"), array("CSecuritySessionMC", "write"), array("CSecuritySessionMC", "destroy"), array("CSecuritySessionMC", "gc"))) { register_shutdown_function("session_write_close"); } } elseif (CSecuritySessionDB::Init()) { //may return false with session.auto_start is set to On if (session_set_save_handler(array("CSecuritySessionDB", "open"), array("CSecuritySessionDB", "close"), array("CSecuritySessionDB", "read"), array("CSecuritySessionDB", "write"), array("CSecuritySessionDB", "destroy"), array("CSecuritySessionDB", "gc"))) { register_shutdown_function("session_write_close"); } } }
/** * @param string $id - session id, must be valid hash * @return string */ public static function read($id) { if (!self::isValidId($id)) { return ""; } if (!self::$isReadOnly && !SessionTable::lock($id, 60)) { CSecuritySession::triggerFatalError('Unable to get session lock within 60 seconds.'); } self::$sessionId = $id; $sessionRow = SessionTable::getRow(array('select' => array('SESSION_DATA'), 'filter' => array('=SESSION_ID' => $id))); if ($sessionRow && isset($sessionRow['SESSION_DATA'])) { return $sessionRow['SESSION_DATA']; } return ''; }
/** * @return bool */ public static function Init() { self::$isReadOnly = defined('BX_SECURITY_SESSION_READONLY'); return CSecurityDB::Init(); }