当前位置:  开发笔记 > 编程语言 > 正文

真正摧毁PHP会话?

如何解决《真正摧毁PHP会话?》经验,为你挑选了1个好方法。

我听到过关于这个主题的不同反应,那么什么是破坏PHP会话的可靠方法呢?

session_start();
if(isset($_SESSION['foo'])) {
   unset($_SESSION['foo'];
   ...
}
session_destroy();

在最简单的情况下,这是否足以真正终止用户和服务器之间的会话?



1> Gumbo..:

要销毁会话,您应该执行以下步骤:

删除会话数据

使会话ID无效

要做到这一点,我会用这个:

session_start();
// resets the session data for the rest of the runtime
$_SESSION = array();
// sends as Set-Cookie to invalidate the session cookie
if (isset($_COOKIE[session_name()])) { 
    $params = session_get_cookie_params();
    setcookie(session_name(), '', 1, $params['path'], $params['domain'], $params['secure'], isset($params['httponly']));
}
session_destroy();

要确保会话ID无效,您应该只允许脚本启动的会话ID.所以设置一个标志并检查它是否设置:

session_start();
if (!isset($_SESSION['CREATED'])) {
    // invalidate old session data and ID
    session_regenerate_id(true);
    $_SESSION['CREATED'] = time();
}

此外,您可以使用此时间戳定期交换会话ID以减少其生命周期:

if (time() - $_SESSION['CREATED'] > ini_get('session.gc_maxlifetime')) {
    session_regenerate_id(true);
    $_SESSION['CREATED'] = time();
}


我知道这已经过时了,但你只回答了我在一个答案中的3个问题.谢谢!
推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有