PHP session_id在刷新时重新生成

时间:2014-12-04 09:01:57

标签: php session session-cookies

我遇到问题session_id()每次在浏览器刷新/重启时返回一个新值。

阅读这篇文章here但它并没有解决问题。我做了那里提到的所有内容 - 浏览器接受cookie,权限设置正确,顺序请求没有更改参数值等。

这可能是指未正确使用session_name()session_set_cookie_params()吗?或者可能是初始配置应该进行微调?

public static function init_session($name = FALSE, $lifetime = 10, $path = '/', $domain = FALSE, $secure = FALSE)   
{
    if (empty($name))
    {
        $name = APP_NAME;
    }

    if (empty($domain))
    {
        $domain = BASE_URL;
    }

    session_name($name);

    session_set_cookie_params($lifetime, $path, $domain, $secure, TRUE);

    session_start();

    echo session_id();
}

1 个答案:

答案 0 :(得分:1)

首先,您将会话生存期设置为 10秒,这意味着您每隔10秒钟就会获得一次新会话。

附注:关闭浏览器时某些浏览器放弃会话Cookie 的正常行为。

如果您需要扩展多个浏览器会话,则需要使用持久性Cookie

示例:

function init_session(/* ... */)
{
    if(!isset($_SESSION)) {
        session_start();
    }
    //Is it a running session?
    if(isset($_SESSION['somevalue'])) {
        //Everything is fine, session is loaded, no need to reload from cookies
    } else {
        if(isset($_COOKIE['yourcookiename'])) {
            //reload session from cookie
        } else {
            create_session();
        }
    }
}

function create_session()
{
    $_SESSION['somevalue'] = 1;
    //setcookie
}

阅读http://www.allaboutcookies.org/cookies/cookies-the-same.html