/** * 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(); }