【问题标题】:Multiple cookies with same name多个具有相同名称的 cookie
【发布时间】:2013-04-07 10:06:01
【问题描述】:

我刚刚发现在处理我的一个页面时在 IE 中遇到了问题。 我设置了 cookie:

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

如果我登录,我会重置 cookie 再次调用该函数。 在 Firefox 中一切正常,因为旧 cookie 被删除,但在 IE 中,两个 cookie 都保留? 这怎么可能发生?这不违法吗?

现在我解决了这个问题:

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

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

【问题讨论】:

    标签: php internet-explorer cookies


    【解决方案1】:

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

    【讨论】:

    • 可以,但是 $_COOKIE['page'] = '1234' 不会改变客户端 cookie 值,只会改变服务器值。
    【解决方案2】:

    只是一种预感,但对于时间戳而言,过期值似乎非常低,因此 cookie 可能会立即过期(即在会话结束时)。也许这样的事情会通过允许多个 cookie 来混淆 IE?

    您可能应该使用time() 来设置到期时间,例如:

    setcookie('page', '12345', time() + 3600, '/');
    

    顺便说一句,您的解决方案对我来说似乎很好。

    【讨论】:

      【解决方案3】:

      我遇到了类似的问题。

      我多次重新加载我的页面,每次加载时都使用 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 错误。我在这里发布它,希望它可以帮助您解决问题。

      【讨论】:

        猜你喜欢
        • 2020-08-17
        • 2013-02-16
        • 1970-01-01
        • 2012-08-30
        • 2011-12-21
        • 1970-01-01
        • 2013-03-31
        • 2011-09-16
        • 1970-01-01
        相关资源
        最近更新 更多