public static function setup() { $session_conf = (array) \Gini\Config::get('system.session'); $cookie_params = (array) $session_conf['cookie']; $session_name = $session_conf['name'] ?: 'gini-session'; $host_hash = sha1($cookie_params['domain'] ?: $_SERVER['HTTP_HOST']); ini_set('session.name', $session_name . '_' . $host_hash); if ($session_conf['save_handler']) { self::$_handlerName = $session_conf['save_handler']; // save_handler = internal/files if (0 == strncmp(self::$_handlerName, 'internal/', 9)) { ini_set('session.save_handler', substr(self::$_handlerName, 9)); } else { // save_handler = Database $class = '\\Gini\\Session\\' . self::$_handlerName; if (class_exists($class)) { self::$_handler = \Gini\IoC::construct($class); session_set_save_handler(self::$_handler, false); } } } if ($session_conf['save_path']) { session_save_path($session_conf['save_path']); } if ($session_conf['gc_maxlifetime']) { ini_set('session.gc_maxlifetime', $session_conf['gc_maxlifetime']); } if (isset($_POST['gini-session'])) { session_id($_POST['gini-session']); } elseif (isset($_SERVER['HTTP_X_GINI_SESSION'])) { session_id($_SERVER['HTTP_X_GINI_SESSION']); } session_set_cookie_params($cookie_params['lifetime'], $cookie_params['path'], $cookie_params['domain']); self::open(); }