2012-03-08 69 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變量和未設置,這是一個「提醒」給你,但要小心不要忘記你需要取消設置的任何變量)。