/** * セッションスタート * * @return void */ private function _start() { static $hasStarted = false; if ($hasStarted !== false || $this->_config['adapter'] === self::ADAPTER_NONE) { return; } $hasStarted = true; $this->_setAdpator($this->_config); HTTP_Session2::start(null); // セッションを通じた固定トークン if (HTTP_Session2::isNew()) { BEAR::dependency('BEAR_Form_Token')->newSessionToken(); } // 有効期限 if (isset($this->_config['idle']) && $this->_config['idle']) { HTTP_Session2::setIdle($this->_config['idle']); // セッションの期限切れ if (HTTP_Session2::isIdle()) { if (isset($this->_config['callback']) && is_callable($this->_config['callback'])) { $method = $this->_config['callback'][1]; BEAR::dependency($this->_config['callback'][0], array())->{$method}(); } else { // コールバック指定がないとセッション破壊 HTTP_Session2::destroy(); } } else { HTTP_Session2::updateIdle(); } } // セッションを開始してから(=最初のアクセス)からセッションが切れる時間を指定 if (isset($this->_config['expire']) && $this->_config['expire']) { HTTP_Session2::setExpire($this->_config['expire'], false); if (HTTP_Session2::isExpired()) { if (isset($this->_config['expire_callback']) && is_callable($this->_config['expire_callback'])) { $method = $this->_config['expire_callback'][1]; BEAR::dependency($this->_config['expire_callback'][0], array())->{$method}(); } else { // コールバック指定がないとセッション破壊 HTTP_Session2::destroy(); } } } // GCが働くまでの時間 if (isset($this->_config['gc_max_lifetime']) && $this->_config['gc_max_lifetime']) { HTTP_Session2::setGcMaxLifeTime($this->_config['gc_max_lifetime']); } // セッションスタート $this->_log->log('Session Start', array('id' => session_id(), 'module' => session_module_name() . '/' . $this->_config['adapter'])); }
if (!defined('SESSION_DISABLE') and !defined('SKIP_SQL_INIT')) { LoadObjectDependency('net.php.pear.HTTP_Session2'); HTTP_Session2::useTransSID(false); HTTP_Session2::useCookies(true); // using an existing MDB2 connection HTTP_Session2::setContainer('MDB2', array('dsn' => $GLOBALS['sql']->GetMDB2Object(), 'table' => 'session')); HTTP_Session2::start(); HTTP_Session2::setExpire(time() + 60 * 60); // set expire to 60 minutes HTTP_Session2::setIdle(time() + 10 * 60); // set idle to 10 minutes if (HTTP_Session2::isExpired()) { syslog(LOG_INFO, "Session expired!!"); HTTP_Session2::destroy(); } if (HTTP_Session2::isIdle()) { syslog(LOG_INFO, "Session became idle"); HTTP_Session2::destroy(); } HTTP_Session2::updateIdle(); if (HTTP_Session2::isNew()) { HTTP_Session2::register('authdata'); HTTP_Session2::register('current_patient'); HTTP_Session2::register('default_facility'); HTTP_Session2::register('ipaddr'); HTTP_Session2::register('language'); HTTP_Session2::register('page_history'); HTTP_Session2::register('page_history_name'); HTTP_Session2::register('patient_history'); } //----- Gettext and language settings