2012-03-08 65 views
0

我有什么会是在PHP登录电子出一个更好的方法,如果有人可以帮助我澄清我将是最gratefull辩论:有什么更好的注销在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

最好是数字(2) – mgraph 2012-03-08 09:05:16

回答

6

一般既不是因为它们都基本上破坏整个会话。

会话不仅用于保持用户登录。会话用于跟踪可能未链接到用户帐户的其他数据,因此您可能不想在注销时将其销毁。

以此为例,您将语言设置存储在会话中。现在用户注销,您想保留语言设置但注销用户。如果你销毁会话,那么跟踪的所有其他数据将被销毁。

我只想取消设置/删除被保持用户的会话变量登录。

4

这取决于你的情况。如果你在会话中持有更多的数据,那么登录信息将不是一个好主意,可以取消整个会话。否则第二个版本似乎更清洁一点。

0

这取决于。如果您没有任何其他想要保留的$ _SESSION变量,并且您的项目有多个开发人员,#2无疑是更好的选择。另一方面,如果你有其他的$ _SESSION变量,或者你正在开发所有的变量,那么你可能想要使用#1(你将能够跟踪你设置的所有$ _SESSION变量和未设置,这是一个“提醒”给你,但要小心不要忘记你需要取消设置的任何变量)。