PHP session_set_cookie_params打破php session_start()函数和$ _SESSION变量

时间:2015-03-08 14:06:33

标签: php session session-variables

我正在尝试通过创建start_secure_session()函数来创建安全会话:

function start_secure_session() {
    $session_name   = 'secure_session';
    $secure         = true;
    $httponly       = true;

    if (ini_set('session.use_only_cookies', 1) === false) {
        die('error');
    }

    $cookie_params  = session_get_cookie_params();
    session_set_cookie_params($cookie_params["lifetime"],
        $cookie_params["path"],
        $cookie_params["domain"],
        $secure,
        $httponly);

    session_name($session_name);
    session_start();
    session_regenerate_id(true);
}

问题是,start_secure_session()没有保存$_SESSION超级全局变量。当页面刷新时,它立即被取消。它只有在我发表评论时才有效:

    //$cookie_params    = session_get_cookie_params();
    //session_set_cookie_params($cookie_params["lifetime"],
    //  $cookie_params["path"],
    //  $cookie_params["domain"],
    //  $secure,
    //  $httponly);

或换句话说,没有设置自定义Cookie参数。

我该怎么做才能让它有效?那么,session_start()可以正常工作,$_SESSION变量可以记住它的价值吗?

1 个答案:

答案 0 :(得分:0)

我认为是因为secure = TRUE并且您没有使用HTTPS? 它不会在安全设置为TRUE的非安全连接上创建会话。