2013-07-31 61 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