多个具有相同名称的cookie

时间:2009-12-17 22:00:35

标签: php internet-explorer cookies

我刚刚发现在使用我的某个页面时我在IE中遇到了问题。 我设置cookie:

setcookie('page', '12345', '2000000', '/');

如果我登录,我会重新设置再次调用该功能的cookie。 在Firefox中一切正常,因为旧cookie被删除但在IE中两个cookie都保留? 怎么会发生这种情况?这不是非法的吗?

现在我用以下方法解决了这个问题:

setcookie('page', '', time() - 3600, '/');
setcookie('page', '1234', '2000000', '/');

这是可行的解决方案还是我错过了什么?

3 个答案:

答案 0 :(得分:4)

According to the documentation,这是删除Cookie的正确方法。

答案 1 :(得分:1)

只是预感,但似乎时间戳的到期值非常低,因此cookie可能会立即到期(即会话结束时)。也许这样的事情会让IE混淆允许多个cookie?

您应该使用time()代替设置到期日期,例如:

setcookie('page', '12345', time() + 3600, '/');
是的,你的解决方案对我来说似乎很好。

答案 2 :(得分:0)

我遇到了类似的问题。

我多次重新加载我的页面,每次加载时都使用session_start()。 JavaScript设置我在PHP中使用的cookie。当客户端是Internet Explorer时,$ _ENV [“HTTP_COOKIE”]包含每个cookie的多个条目。 Firefox不会发生这种情况。

到目前为止,尽管我已经知道了,当在名为x.y.z的域中执行代码时,Internet Explorer会发送x.y.z的cookie,然后是y.z的cookie。 PHP然后将两组cookie放入$ _ENV [“HTTP_COOKIE”]。

也许这可能被视为PHP错误,也许不是。恕我直言,这是一个Internet Explorer的错误。我在这里发布,希望它可以帮助您解决问题。