我只在会话中存储登录的用户id。
当用户注销时,会话对我来说就变得无用了。我一定要毁了它吗?
这些是我用来启动和销毁会话的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)
发布于 2015-06-21 01:30:24
你不必销毁整个会话,只需unset
你不需要的部分。比方说,当用户登录时,您设置了$_SESSION['user_id']
,并且所有内容都显示为I is logged in,将查找该变量。一个简单的unset($_SESSION['user_id']);
,突然用户就被注销了。请记住,您的用户无法控制会话中的内容。
另一种选择是set the session cookies to very low lifetimes。它更粗糙,但同样有效。
发布于 2015-06-21 01:23:42
我强烈建议您销毁会话。为了安全性和性能。
通常情况下,会话数据保存在服务器上的临时文件和浏览器上的cookie中,这个文件只包含会话id而不包含数据。
当您调用会话销毁时,您将删除此文件,但您也可以通知浏览器删除会话cookie (发送一个具有相同名称的cookie,该cookie已在过去过期)。您可以知道调用session_name()
函数的名称(通常是PHPSESSID
)。
发布于 2015-06-21 01:32:15
当用户注销时,会话对我来说变得无用了。我一定要毁了它吗?
是。除了销毁它之外,生成一个新的session-id也很有帮助
有时我会随机收到错误/警告,如会话无法被销毁……我做错了什么吗?
您不能销毁尚未启动的会话。在尝试销毁session_start();
之前,请确保您已成功启动它的会话
https://stackoverflow.com/questions/30960343
复制