2017-07-11 144 views
1

不工作這是一種奇怪的,不過我現在用一個cookie:刪除的cookie在PHP

setcookie('auth', 'ok', time() + 3600, "/"); 

結果:

Name: auth 
Content: ok 
Domain: --.com 
Path: /
Send for: Any kind of connection 
Accessible to script: Yes 
Created: Tuesday, July 11, 2017 at 11:00:23 PM 
Expires: Wednesday, July 12, 2017 at 12:00:23 AM 

它工作正常,但是當我想刪除這個餅乾:

setcookie('auth', 'ok', time() - 3600, "/"); 
unset($_COOKIE['auth']); 

沒有在結果沒有變化,且Cookie不會被刪除,而我在我的瀏覽器中仍然有這個cookie。

該Cookie在此URL創建:

auth.php行動=確認

,並呼籲與ajax功能:

模型/ auth.php

它應該刪除它在這個網址:

auth.php行動=登出

但它無法正常工作。任何想法?

+0

嘗試在刪除cookie時將值設置爲'null',並將時間設置爲'-1',但過去任何時候都應該有效。 – tilz0R

+0

你嘗試過'setcookie(「auth」,「」,time() - 3600);'?定義空值 – JTC

+0

@JTC是的,我也嘗試過'null'但不工作,空和空..仍然有這個cookie – Pedram

回答

0

一個乾淨的方式來刪除cookie是以清除$ _COOKIE值和瀏覽器的cookie文件:

if (isset($_COOKIE['auth'])) { 
    unset($_COOKIE['auth']); 
    setcookie('auth', '', time() - 3600, '/'); // Empty value and old timestamp 
} 
+0

但仍無法正常工作..:| – Pedram

+0

是否將瀏覽器cookie文件更改爲空? – noobcode

+0

沒有什麼改變。我插入這個'if(isset($ _ COOKIE ['auth'])){echo「ok」;}'它打印'ok'我的意思是它檢測到cookie,但不能刪除或更改。 – Pedram

0

最有可能破壞你的餅乾之前輸出一些數據。

嘗試檢查這一點,任何輸出前使用此代碼:

setcookie("auth", "", time()-3600); 

有了這個$sent = headers_sent($file, $line);你可以看到,如果你試圖摧毀餅乾之前的一些數據已經輸出。