PHP:如何正确销毁会话,删除会话数据和取消设置会话变量

时间:2015-06-26 04:54:58

标签: php session session-variables destroy

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

我按照以下方式在页面上开始会话,目前按预期工作:

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

现在,如果用户想要注销,我还想销毁此会话(包括删除其数据并取消设置其变量等)​​。在搜索有关此问题的指导原则时,我在PHP Manual上发现了以下内容,但我不知道如何应用此功能,而且我不明白ini部分中的行是什么

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

我目前用于销毁会话的代码:

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();

非常感谢提前。

2 个答案:

答案 0 :(得分:1)

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

只需设置$_SESSION["User"]["login"] = false以及检查用户登录所需的任何位置,请检查

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

答案 1 :(得分:1)

这是PHP手册所说的

  

session_destroy()会销毁与当前关联的所有数据   会话。它不会取消任何与之相关的全局变量   会话,或取消设置会话cookie

结帐PHP Manual

您可以使用unset($_SESSION);

OR

$_SESSION = array();

这也会清空Session数据