예제 #1
0
파일: Session.php 프로젝트: tokushima/ebi
 /**
  * セッションを開始する
  * @param string $name
  * @return $this
  * 
  */
 public function __construct($name = 'sess')
 {
     $this->ses_n = $name;
     if ('' === session_id()) {
         $cookie_params = \ebi\Conf::cookie_params();
         session_name($cookie_params['session_name']);
         session_cache_expire($cookie_params['session_expire']);
         session_cache_limiter($cookie_params['session_limiter']);
         if ($cookie_params['cookie_lifetime'] > 0 || $cookie_params['cookie_path'] != '/' || !empty($cookie_params['cookie_domain']) || $cookie_params['cookie_secure'] !== false) {
             session_set_cookie_params($cookie_params['cookie_lifetime'], $cookie_params['cookie_path'], $cookie_params['cookie_domain'], $cookie_params['cookie_secure']);
         }
         if (static::has_class_plugin('session_read')) {
             ini_set('session.save_handler', 'user');
             session_set_save_handler([$this, 'open'], [$this, 'close'], [$this, 'read'], [$this, 'write'], [$this, 'destroy'], [$this, 'gc']);
             if (isset($this->vars[session_name()])) {
                 session_regenerate_id(true);
             }
         }
         session_start();
         register_shutdown_function(function () {
             if ('' != session_id()) {
                 session_write_close();
             }
         });
     }
 }
예제 #2
0
파일: Request.php 프로젝트: tokushima/ebi
 /**
  * クッキーへの書き出し
  * @param string $name 書き込む変数名
  * @param int $expire 有効期限(秒) (+ time)
  */
 public function write_cookie($name, $expire = null)
 {
     $cookie_params = \ebi\Conf::cookie_params();
     if ($expire === null) {
         $expire = $cookie_params['cookie_lifetime'];
         if ($expire > 0) {
             $expire = $expire + time();
         }
     }
     setcookie($name, $this->in_vars($name), time() + $expire, $cookie_params['cookie_path'], $cookie_params['cookie_domain'], $cookie_params['cookie_secure']);
 }