选择语言 :

 Module_Session_Driver_Default::create

创建Session

void Module_Session_Driver_Default::create( )
返回值
  • void
File: ./modules/session/driver/default.class.php
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();
}