我只在SESSION中存储已记录的用户ID。
当用户退出时,SESSION对我来说变得毫无用处。我必须摧毁它吗?
这些是Utils类的方法,我用它来启动和销毁SESSION。
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 :(得分:2)
您不必销毁整个会话,只需要unset
您不需要的部分。假设当用户登录时设置$_SESSION['user_id']
并且所有显示我已登录的内容正在查找该变量。一个简单的unset($_SESSION['user_id']);
突然用户退出了。请记住,您的用户无法控制会话中的内容。
另一个选择是set the session cookies to very low lifetimes。它更加粗糙但同样有效。
答案 1 :(得分:0)
我强烈建议你破坏会话。对于安全性和性能。
通常会话数据保存在服务器上的临时文件中和浏览器上的cookie中,这个只包含会话ID但没有数据。
当您调用会话销毁时,您删除此文件,但您也可以通过电话浏览器删除会话cookie(发送一个过去相同名称的cookie)。您可以知道调用PHPSESSID
函数的名称(通常是New-WebBinding
)。
答案 2 :(得分:0)
当用户退出时,SESSION对我来说变得毫无用处。我必须摧毁它吗?
是。除了销毁它之外,它还有助于生成新的session-id
有时随机我会收到错误/警告,如SESSION无法销毁......我做错了吗?
您无法销毁尚未启动的会话。在尝试销毁之前,请确保已成功启动与session_start();
的会话