123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- <?php
- class sfSessionStorage extends sfStorage
- {
- static protected
- $sessionIdRegenerated = false,
- $sessionStarted = false;
-
- public function initialize($options = null)
- {
- $cookieDefaults = session_get_cookie_params();
- $options = array_merge(array(
- 'session_name' => 'symfony',
- 'session_id' => null,
- 'auto_start' => true,
- 'session_cookie_lifetime' => $cookieDefaults['lifetime'],
- 'session_cookie_path' => $cookieDefaults['path'],
- 'session_cookie_domain' => $cookieDefaults['domain'],
- 'session_cookie_secure' => $cookieDefaults['secure'],
- 'session_cookie_httponly' => isset($cookieDefaults['httponly']) ? $cookieDefaults['httponly'] : false,
- 'session_cache_limiter' => 'none',
- ), $options);
-
- parent::initialize($options);
-
- $sessionName = $this->options['session_name'];
- session_name($sessionName);
- if (!(boolean) ini_get('session.use_cookies') && $sessionId = $this->options['session_id'])
- {
- session_id($sessionId);
- }
- $lifetime = $this->options['session_cookie_lifetime'];
- $path = $this->options['session_cookie_path'];
- $domain = $this->options['session_cookie_domain'];
- $secure = $this->options['session_cookie_secure'];
- $httpOnly = $this->options['session_cookie_httponly'];
- session_set_cookie_params($lifetime, $path, $domain, $secure, $httpOnly);
- if (!is_null($this->options['session_cache_limiter']))
- {
- session_cache_limiter($this->options['session_cache_limiter']);
- }
- if ($this->options['auto_start'] && !self::$sessionStarted)
- {
- session_start();
- self::$sessionStarted = true;
- }
- }
-
- public function read($key)
- {
- $retval = null;
- if (isset($_SESSION[$key]))
- {
- $retval = $_SESSION[$key];
- }
- return $retval;
- }
-
- public function remove($key)
- {
- $retval = null;
- if (isset($_SESSION[$key]))
- {
- $retval = $_SESSION[$key];
- unset($_SESSION[$key]);
- }
- return $retval;
- }
-
- public function write($key, $data)
- {
- $_SESSION[$key] = $data;
- }
-
- public function regenerate($destroy = false)
- {
- if (self::$sessionIdRegenerated)
- {
- return;
- }
-
- session_regenerate_id($destroy);
- self::$sessionIdRegenerated = true;
- }
-
- public function shutdown()
- {
-
- session_write_close();
- }
- }
|