2015-06-26 44 views
0

我是新來的PHP會議,並正在尋找一些幫助,下面: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(); 

提前非常感謝。

+0

未設置($ _ SESSION)確實嘗試了這一項 – Ramki

+0

感謝您的支持。 – TaneMahuta

回答

1

這是PHP手冊說

session_destroy()銷燬所有與當前 會話相關的數據的。它不取消任何與 相關的會話,或者取消會話cookie的全局變量的

結帳的PHP Manual

您可以使用unset($_SESSION);

OR

$_SESSION = array(); 

這也將清空Session數據

+0

非常感謝 - 這真是太棒了!在我的情況下,可能會發生這樣的情況:一個用戶爲了不同的目的而註冊了兩個不同的電子郵件地址,所以我想讓他們能夠從一封電子郵件中註銷,然後使用另一個登錄,而無需關閉瀏覽器。我想採用這種方法,所以考慮到上述情況,我只是使用unset($ _ SESSION);爲變量,然後session_destroy();爲實際會議?我想確保會話及其變量都被銷燬/刪除。 – TaneMahuta

+0

是的..肯定的,你只需要使用'unset'函數然後'session_destroy()'。這將完成這項工作 – Abhinav

1

您不需要銷燬$ _SESSION,PHP垃圾收集器會自動執行此操作。

只需設置$_SESSION["User"]["login"] = false到處都需要檢查用戶登錄,檢查

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

感謝您的支持。 – TaneMahuta