Пример #1
0
 /**
  * Constructor
  *
  * @param   string  $store    The type of storage for the session.
  * @param   array   $options  Optional parameters
  */
 public function __construct($store = 'none', $options = array())
 {
     // Need to destroy any existing sessions started with session.auto_start
     if (session_id()) {
         session_unset();
         session_destroy();
     }
     // Set default sessios save handler
     ini_set('session.save_handler', 'files');
     // Disable transparent sid support
     ini_set('session.use_trans_sid', '0');
     if ($store == 'database') {
         if (ini_get('session.gc_probability') < 1) {
             ini_set('session.gc_probability', 1);
         }
         if (ini_get('session.gc_divisor') < 1) {
             ini_set('session.gc_divisor', 100);
         }
     }
     // Create handler
     $this->store = Store::getInstance($store, $options);
     // Set options
     $this->setOptions($options);
     // Pass session id in query string when cookie not available.
     // This is used, in particular, to allow QuickTime plugin in Safari on the Mac
     // to view private mp4. QuickTime does not pass the browser's cookies to the site
     if (!isset($_COOKIE[session_name()]) && isset($_GET['PHPSESSID'])) {
         if (strlen($_GET['PHPSESSID']) == 32 && ctype_alnum($_GET['PHPSESSID'])) {
             if ($this->store->read($_GET['PHPSESSID']) != '') {
                 session_id($_GET['PHPSESSID']);
             }
         }
     }
     $this->setCookieParams();
     // Load the session
     $this->start();
     // Initialise the session
     $this->setCounter();
     $this->setTimers();
     $this->state = 'active';
     // Perform security checks
     $this->validate();
 }