2014-02-18 60 views
0

我有一個cookie,我設置使用下面的命令:爲什麼我的cookie不會被刪除?

setcookie('auth', 'cookie data' , time() + 3600, '/', '.mydomain.com', true, true); 

,當我退出,我調用一個函數來清除它,它將會:

setcookie('auth', "", time() - 3600, '/', '.mydomain.com', true, true); 

但是,如果我然後刷新頁面,$ _COOKIE ['auth']仍然設置,並返回應該消失的舊'cookie數據'值!

我錯過了什麼?

+0

是服務器或客戶端關閉的時間?它們應該是同一時間 – exussum

+1

您應該選擇一個比'time() - 3600'更低的值,因爲如果最終用戶居住在不同的時區,這可能不起作用。那麼'1'怎麼樣? –

+0

檢查您的HTTP流量。這應該告訴你這個問題。 – eis

回答

0
unset($_COOKIE['auth']); 
setcookie('auth', ''); 
+0

請解釋你的答案。我傾向於downvote代碼轉儲 –

+0

,儘管我也討厭代碼轉儲,在過去設置之前取消設置'$ _COOKIE ['auth']'全局'來解決問題。 –

0
  1. 確保您還沒有已經發送了頭 http://www.php.net/manual/en/function.headers-sent.php

  2. 確保您發送頭。你在輸出什麼嗎?如果不是,則回顯任何內容以確保在退出之前發送標題。從餅乾全球陣列還

    如果

  3. 刪除(isset($ _ COOKIE [ 'AUTH'])){ 未設置($ _ COOKIE [ 'AUTH']); }

  4. 如果你的會話名稱是「權威性」,任何改變會話數據可以重寫會話cookie

+0

標題尚未發送,但在腳本終止之前發送 –

+0

嘗試從Cookie全局刪除也沒有任何機會將您的會話稱爲「auth」?因爲如果您在刪除cookie後更改會話數據,也可能會這樣做 – troseman