在php注销什么更好?

Gun*_*nit 0 php

我正在讨论什么是更好的登出php的方法,如果有人可以帮我澄清我会非常感激:

我有两个版本的注销代码

1)

$logoutGoTo = "login.php";
if (!isset($_SESSION)) {
  session_start();
}
$_SESSION['username'] = NULL;
$_SESSION['user_id'] = NULL;
unset($_SESSION['username']);
unset($_SESSION['user_id']);
$_SESSION = array();
if ($logoutGoTo != "") {header("Location: $logoutGoTo");
exit;
Run Code Online (Sandbox Code Playgroud)

2)

session_start();
    session_unset();
session_destroy();
Run Code Online (Sandbox Code Playgroud)

哪个更好的解决方案?

MrC*_*ode 6

通常都不是因为它们都基本上破坏了整个会话.

会话不仅仅是为了保持用户的登录.会话用于跟踪可能未链接到用户帐户的其他数据,因此您可能不希望在注销时销毁它.

以此为例,您将语言设置存储在会话中.现在用户注销,您希望保留语言设置但注销用户.如果您销毁会话,则会销毁您的跟踪所有其他数据.

我只是取消/删除保持用户登录的会话变量.