创建Session
void Module_Session_Driver_Default::create( )
void
public function create()
{
if ( preg_match('#^(?=.*[a-z])[a-z0-9_]++$#iD', Session::$config['name']) )
{
session_name(Session::$config['name']);
}
$this->destroy();
$cookieconfig = Core::config('cookie');
# 这里对IP+非80端口的需要特殊处理下,经试验,当这种情况下,设置session id的cookie的话会失败
if (preg_match('#^([0-9]+.[0-9]+.[0-9]+.[0-9]+):[0-9]+$#',$cookieconfig['domain'],$m))
{
# IP:PORT 方式
$cookieconfig['domain'] = $m[1];
}
$sname = session_name();
if (isset($_COOKIE[$sname]) && $_COOKIE[$sname])
{
$old_sid = $_COOKIE[$sname];
# 校验Session ID
if (!Session::check_session_id($old_sid))
{
# 如果检验的Session ID不合法,则重新生成一个
session_id( Session::create_session_id() );
}
}
else
{
# 设置Session ID
session_id( Session::create_session_id() );
}
session_set_cookie_params(Session::$config['expiration'], $cookieconfig['path'], $cookieconfig['domain'], $cookieconfig['secure'], $cookieconfig['httponly']);
session_start();
}