2010-11-25 121 views
1

很多時候我們使用會話變量來在頁面中存儲數據。當用戶從一個頁面跳轉到另一個頁面時,我需要從JavaScript中終止會話。可能嗎。如果是的話請引導我。如何從javascript中刪除會話

在此先感謝

+0

你想殺掉會話,或刪除會話變量/密鑰? – Gidon 2010-11-25 07:49:29

+0

我想用他想描述的變量來描述他的意思。他想完全殺死它.. – 2010-11-25 08:10:41

回答

7

你需要告訴服務器終止會話變量。

要做到這一點的唯一方法是從JavaScript的是使用Ajax調用一些自定義頁面,例如作爲變量您想要刪除的會話密鑰。

2

刪除會話cookie。對於PHP,它被稱爲PHPSESSID。如果這樣做,瀏覽器將丟失會話ID,實際會話數據將不再可供該客戶端訪問。

看到這裏如何從JavaScript的處理Cookie:http://www.quirksmode.org/js/cookies.html

+0

你的意思是,會話保存在cookie中?這意味着如果你禁用了cookies,你將無法使用任何與會話一起工作的網站。 – 2010-11-25 08:12:59

+1

@弗洛裏安那是不正確的。會話的ID是保存在cookie中的大部分時間。實際會話數據保存在服務器上。但是,如果您使用該ID刪除Cookie,則客戶端會失去該會話,這就是我認爲的提問者想要的。實際的數據將在稍後被垃圾收集器刪除,但我們不應該在意這一點,因爲如果沒有這個ID就無法訪問它。 – 2010-11-25 08:15:54

+0

好的,我不知道。謝謝;) – 2010-11-25 08:17:56

2

你必須觸發一個AJAX事件,例如:

function kill_session() { 
    if (window.XMLHttpRequest) 
     {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
     {// code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 

    xmlhttp.open("GET","session_destroyer.php",false); 
    xmlhttp.send(); 

    document.getElementById("id_of_a_hidden_div").innerHTML=xmlhttp.responseText; 
} 

而且你session_destroyer.php力量看起來像:

<?php 
    session_start(); 
    session_destroy(); 
?> 
1

Session對象是服務器對象,你不能從訪問javascript直接。 你應該創建一個到服務器的ajax調用來終止會話。 你可以使用jquery來做到這一點,非常容易,請檢查這個鏈接。 http://api.jquery.com/jQuery.ajax/