Ejemplo n.º 1
0
 /**
  * セッションスタート
  *
  * @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']));
 }
Ejemplo n.º 2
0
 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
 if (isset($_REQUEST['_l'])) {
     // Handle template language changes
     HTTP_Session2::set('language', $_REQUEST['_l']);
 } elseif (HTTP_Session2::get('language')) {
     // Pull from cookie (do nothing)