如何在PHP中正确关闭会话?

时间:2015-02-28 19:48:34

标签: php session

目前,我使用以下内容作为会话设置,保存在文件中并包含在我的所有页面中:

ini_set('session.name', 'SOMESESSID');
ini_set('session.cookie_lifetime', 0);
ini_set('session.use_cookies', 1);
ini_set('session.use_only_cookies', 1);
ini_set('session.use_strict_mode', 1);
ini_set('session.cookie_httponly', 1);
ini_set('session.cookie_secure', 0); // will change in production
ini_set('session.use_trans_sid', 0);
ini_set('session.cache_limiter', 'nocache'); // previously set to 'private_no_expire'
ini_set('session.hash_function', 'sha256');

session_start();

session_regenerate_id();

然后在登录时,我只需在$_SESSION超级全局中的其他内容中保留用户ID。然后我使用以下函数结束会话:

function session_logout() {
    $_SESSION = array();

    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 86400, $params["path"], $params["domain"], $params["secure"], $params["httponly"]);

    session_destroy();

    redirect_to('admin_index');
}

session.cache_limiter设置为初始设置private_no_expire不会在调用session_logout()函数时立即将用户注销。我可以多次刷新页面,用户会话仍然在那里。一旦我将该设置更改为nocache,用户实际上将在调用该函数时注销。

现在我很好奇,将session.cache_limiter设置为nocache会影响我所有内容的缓存,更具体地说是图像和诸如此类的内容,或者是严格按照上下文设置会议?如果它确实影响了一切,有没有办法解决这个问题呢?

另一方面,我目前使用的方法是使用最好的会话方式,还是有更好的方法?

0 个答案:

没有答案