PHP:如何正确销毁 session、删除 session 数据和取消设置 session 变量

PHP: How to properly destroy session, delete session data and unset session variables

我是 PHP session 的新手,正在寻求以下方面的帮助:

我在页面上启动了一个 session,如下所示,到目前为止它按预期工作:

session_start();
// ...
$_SESSION["User"]["login"] = "loggedIn";
$_SESSION["User"]["username"] = $email;

现在,如果用户想要注销,我也想销毁它 session(包括删除它的数据和取消设置它的变量等)。在搜索这方面的指南时,我在 PHP Manual 上遇到了以下内容,但 我不确定如何应用它,我不明白 ini 部分中的行的真正作用.

有人可以帮我解决这个问题,也许还可以提供一些简短的解释吗?

我现在的代码破坏了session:

session_start();
// ...
$_SESSION = array();
if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000,
        $_SESSION["User"]["login"] = "",
        $_SESSION["User"]["username"] = ""
    );
}
session_destroy();

非常感谢。

您不需要销毁 $_SESSION,PHP 垃圾收集器会自动执行此操作。

只需设置 $_SESSION["User"]["login"] = false 并在任何需要检查用户登录的地方检查

if ($_SESSION["User"]["login"]) {
    // do something
} else {
    echo "You don't have access";
}

这就是PHP手册所说的

session_destroy() destroys all of the data associated with the current session. It does not unset any of the global variables associated with the session, or unset the session cookie

查看 PHP Manual

您可以使用unset($_SESSION);

$_SESSION = array();

这也会清空 Session 数据