我正在讨论什么是更好的登出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;
2)
session_start();
session_unset();
session_destroy();
哪种解决方案更好?
答案 0 :(得分:6)
一般情况下都不是因为它们都会破坏整个会话。
会话不仅仅是为了保持用户的登录。会话用于跟踪可能未链接到用户帐户的其他数据,因此您可能不希望在注销时将其销毁。
以此为例,您将语言设置存储在会话中。现在用户注销,您希望保留语言设置但注销用户。如果您销毁会话,则会销毁您的跟踪所有其他数据。
我只是取消/删除保持用户登录的会话变量。
答案 1 :(得分:4)
这取决于你的情况。如果您在会话中保存更多数据然后登录信息,则取消设置整个会话不是一个好主意。否则第二个版本似乎有点清洁。
答案 2 :(得分:0)
这取决于。如果您没有任何其他$ _SESSION变量,并且您的项目有多个开发人员,那么#2绝对是更好的选择。
另一方面,如果您有其他$ _SESSION变量,或者您自己开发所有变量,那么您可能希望使用#1(您将能够跟踪您设置的所有$ _SESSION变量和unset,这对你来说是一个“提醒”,但要注意不要忘记你需要取消设置的任何变量。