2012-11-07 109 views
0

我試圖刪除會話cookie。這些是我正在遵循的步驟過期的會話cookie似乎仍然存在

 // Find the session - I believe this is doing a resume rather than starting a fresh session thus identifying the session. 
     session_start(); 

     // Unset all the session variables enmasse by assigning an empty array 
     $_SESSION = array(); 

     // find the session name that has been allocated then destroy the session cookie 
     if(isset($_COOKIE[session_name()])){ 
      setcookie(session_name(),'', time()-42000, '/'); 
      // set content of found session to null, with a past time, at the root 
     } 

     // Destroy the session 
     session_destroy(); 

這絕對會讓我失望。然而,實際的cookie仍然存在,可以在瀏覽器(firefox)中查看。

$_COOKIE[session_name()] 

似乎正在返回加密的內容字符串,而不是會話名稱。

問題:

如果$ _COOKIE [會話名稱()]是不是讓會話名稱是什麼正確的方法是什麼?

我應該設置一個session_name,而不是允許它默認?

我看到會議,因爲它正在等待某種垃圾收集?

回答

0

你可能想看看這個頁面:

http://php.net/manual/en/function.session-destroy.php

爲了完全終止會話,想註銷用戶,會話ID也必須給予取消。如果使用cookie傳播會話標識(默認行爲),則必須刪除會話cookie。 setcookie()可用於此目的。

此基礎上,而不是session_name()你可能想使用session_id()

+0

沒有那麼肯定,如果這是正確的,請參閱:http://php.net/manual/en/function.session- destroy.php – hakre

+0

session_id確實無法正常工作,它似乎返回null。我想知道,如果我對root的依賴,即'/'是錯誤的,而不是獲取和使用cookie params – codepuppy

+0

我以前讀過這個文檔,但沒有應用它的單詞。我剛剛嘗試這樣做,但它沒有協助。 – codepuppy

相關問題