2013-07-31 63 views
2

以下是我如何在PHP和Javascript中創建Cookie無法刪除由PHP生成的Cookie

PHP在加載頁面之前,我首先通過PHP創建cookie。

setcookie('my_key', $value, 0,ADMIN_COOKIE_PATH);

的JavaScript。我實際上使用jQuery與這個cookie插件。

當下拉列表發生變化時,我更改cookie值。

jQuery.cookie("my_key", selected);

在谷歌瀏覽器,一切都按我的預期。

當下拉改變時,my_key cookie的值將被改變。

在Firefox中,它會生成另一個相同的cookie。

是的,這是相同的由PHP產生的my_key餅乾:

相同的名字,相同到期(瀏覽器會話),同一個域中,相同的路徑,相同的HttpOnly(空白),相同的安全性(空白)

唯一的區別是新cookie設置爲新值。

我嘗試jQuery.removeCookie('my_key')但它只能刪除新的cookie。

我不確定它是否是Firefox的錯誤,或者我做錯了什麼。但是,確實,這是一個令人討厭的問題。


更新1:這是真的,我沒有在JavaScript和現在我可以改變這是由PHP生成,當我設置的路徑cookie的具體路徑。但仍然無法通過JS刪除cookie。

僅供參考,我可以在PHP中刪除cookie,但不能在JS中刪除它們。

+1

您使用的是默認路徑嗎? – Spokey

+0

您是否檢查過cookie傳遞迴PHP? – RiggsFolly

+0

@Spokey是的,謝謝你的提醒。我設置路徑'jQuery.cookie(「my_key」,選中,{'path':'/ admin'});'我可以更改cookie而不是創建一個新的cookie。但仍然無法刪除cookie。 – Jesse

回答

3

回答由Spokey和MightyPork啓發:

  • 1,設置路徑jQuery.cookie

  • 2時,使用jQuery.cookie("my_key", '',{expires: -1,path:'/admin'});代替jQuery.removeCookie

更新:

昨天晚上我沒有使用jQuery.removeCookie('my_key',{path:'/ admin'}),但沒有工作。我今天早上再試一次,它正在工作。也許我昨​​晚太累了。

結論

整個事情是關於路徑。我想,從我的測試來看,也許firefox比cookie chrome有更嚴格的標準來處理cookie。

+0

http://stackoverflow.com/a/25967822/1642018 – AMB