Module_Session::__construct
null Module_Session::__construct( )
File: ./modules/session/session.class.php
public function __construct($vars = null)
{
// This part only needs to be run once
if (null===Session::$instance)
{
// Load config
Session::$config = Core::config('session');
if (!isset(Session::$config['check_string']) || !Session::$config['check_string'])
{
Session::$config['check_string'] = '&$@de23#$%@.d3l-3=!#1';
}
if (!isset(Session::$config['name']) || !preg_match('#^(?=.*[a-z])[a-z0-9_]++$#iD', Session::$config['name']))
{
// Name the session, this will also be the name of the cookie
Session::$config['name'] = 'PHPSESSINID';
}
if (IS_DEBUG)
{
$time = microtime(1);
$is_debug = (bool)Core::debug()->profiler()->is_open();
if ($is_debug)
{
Core::debug()->profiler()->start('Core', 'Session StartTime');
}
}
if (isset(Session::$config['driver']) && class_exists('Session_Driver_' . Session::$config['driver'], true))
{
$driver_name = 'Session_Driver_' . Session::$config['driver'];
if (isset(Session::$config['driver_config']))
{
$this->driver = new $driver_name(Session::$config['driver_config']);
}
else
{
$this->driver = new $driver_name();
}
}
else
{
$this->driver = new Session_Driver_Default();
}
if (IS_DEBUG)
{
if ($is_debug)
{
Core::debug()->profiler()->stop();
}
# 输出Session启动使用时间
Core::debug()->info(microtime(1)-$time, 'Session start use time');
}
if ($vars)
{
$this->set($vars);
}
if (!isset($_SESSION['_flash_session_']))
{
$_SESSION['_flash_session_'] = array();
}
Session::$flash = & $_SESSION['_flash_session_'];
# 清理Flash Session
$this->expire_flash();
$_SESSION['SID'] = $this->driver->session_id();
# 确保关闭前执行保存
Core::register_shutdown_function(array('Session', 'write_close'));
Session::$instance = $this;
# 加载用户数据
Session::load_member_data();
}
}