2015-06-21 32 views
2

我只在SESSION中存储登录的用户ID。用户注销时是否必须销毁SESSION?

当用户注销时,SESSION对我来说变得毫无用处。我必须销毁它吗?

这些是我用来启动和销毁SESSION的Utils类的方法。

static function sessionSecureStart() 
{ 
    if (session_status() == PHP_SESSION_NONE) { 
     session_start(); 
    } 
} 

static function sessionSecureDestroy() 
{ 

    //Utils::sessionSecureStart(); This part is for testing only 

    if (session_status() == PHP_SESSION_ACTIVE) { 
     $_SESSION = []; 
     session_destroy(); 
    } 

} 

有时会随机出现错误/警告,例如SESSION could not be destroyed....我做错了什么?

(我使用PHP/5.5.25)

+0

你能在扩大(并提供完全相同的文字)的错误/警告之前成功启动与session_start();您的会议? – user2864740

+0

@ user2864740我试图抓住错误文本,张贴在这里。但正如我所说这是随机的。有时在刷新页面时。例如5次刷新后没有任何交互。当我再次得到它时,我会更新我的问题。 – Jaxovee

+0

对我来说,“随机误差”是*真正*的问题。 – user2864740

回答

0

我强烈建议你销毁会话。兼顾安全性和性能。

通常,会话数据保存在服务器上的临时文件中,并保存在浏览器的Cookie中,该数据只包含会话ID但不包含数据。

当您致电会话销毁时,您将删除此文件,但您也可以通过浏览器来删除会话cookie(发送过去同名的cookie)。你可以知道调用session_name()函数的名字(通常是PHPSESSID)。

2

您不必破坏整个会话,只是unset你不需要的部分。比方说,当用户登录时,您设置了$_SESSION['user_id']以及所有说我登录正在寻找该变量。一个简单的unset($_SESSION['user_id']);并突然用户注销。请记住,您的用户无法控制会话内容。

另一种选择是set the session cookies to very low lifetimes。它更粗糙但同样有效。

0

当用户注销时,会议变得无用我。我必须销毁它吗?

是。除了破坏它,它也有助于生成一个新的会话编号

有时随机我得到像SESSION错误/警告不能被破坏....我做错了什么?

你不能破坏还没有被启动的会话。请确保您已试图摧毁它

相关问题