2012-01-06 59 views
1

要檢查什麼餅乾存在我使用這個文件(test.php的):餅乾不會被刪除正確

foreach ($_COOKIE as $key => $value) { 
    print $key . "=" . $value . "</br>"; 
} 

我得到以下輸出:

fbsr_{app id}={a bunch of chars} 

(凡內的東西{ }是私有數據)

要刪除我的所有會話我用這個:

session_start(); 
session_unset(); 
session_destroy(); 

這刪除了我的餅乾:

setcookie('fbsr_' . $app_id, $_COOKIE['fbsr_' . $app_id], time() - 3600); 
setcookie('PHPSESSID', $_COOKIE['PHPSESSID'], time() - 3600); 
unset($_COOKIE['fbsr_' . $app_id]); 
unset($_COOKIE['PHPSESSID']); 

問題是當我運行的代碼檢查,如果我的餅乾都死了,他們都沒有,我也得到相同的輸出:/

爲什麼我的餅乾沒有刪除?我的代碼在某個地方不好嗎?嘗試了幾種瀏覽器...

編輯: 好像餅乾也被打爛畢竟,但是測試功能仍然打印餅乾輸出?!?!我很困惑?!

(註銷文件)

if($action == 'logout'){ 

     $app_id = $facebook->getAppID(); 

     if (isset($_COOKIE['fbsr_' . $app_id])) { 
      echo 'goes here<br>'; 
      setcookie('fbsr_' . $app_id, $_COOKIE['fbsr_' . $app_id], time() - 3600, "/"); 
      setcookie('PHPSESSID', $_COOKIE['PHPSESSID'], time() - 3600, "/"); 
      unset($_COOKIE['fbsr_' . $app_id]); 
      unset($_COOKIE['PHPSESSID']); 
     } 

     if (isset($_COOKIE['fbsr_' . $app_id])) { 
      echo 'is still sett<br>'; 
     } 

     session_start(); 
     session_unset(); 
     session_destroy(); 

     $result = array("success" => "true"); 
    } 

它永遠不會打印is still sett這意味着cookie將被刪除!

謝謝:)

+0

是會話摧毀你打電話之前取消設置($ _ COOKIE [ 'PHPSESSID'])?此時,如果會話ID爲空,那麼cookie不能檢索該ID,並且該cookie不會被取消設置,因爲它沒有被引用。如果是這種情況,我會在確認會話在cookie被取消設置之前被銷燬之後將其放入答案表格中。 – 2012-01-06 22:17:30

+0

解決了PHPSESSID cookie的問題,另一個仍然存在:/ – Richard 2012-01-06 22:33:47

+0

您是否已將session_destroy()移動到「setcookie」語句下方? – 2012-01-06 22:36:18

回答

1

這是一個方法我都用過刪除的cookie

if (isset($_COOKIE['cookieName'])) { 
    setcookie('cookieName', '', time()-1); 
}