【问题标题】:Expire vs. clearing a cookie过期与清除 cookie
【发布时间】:2013-05-09 21:47:59
【问题描述】:

关于使用 PHP 创建 cookie,使用 'setcookie' 的 'expire' 参数和只将 cookie 设置为 "" 有什么区别?换句话说,我有一个正在收集信息的 cookie,在某个时候我会抓取所有这些信息并将其发送,然后我想从本质上销毁 cookie。由于(根据我的理解)cookie 存储在客户端,我的选项是过期或设置为“”。从我读到的,“过期”只是将 cookie 设置为 0,所以它只是关于值; int 0 还是空字符串?

还有一个关于扩展此处提出的原始问题的问题。 AKA 如果我发布了一个问题,然后想问一个类似的问题,我是编辑原始问题并添加这个新部分还是开始一个新问题(就像我在这里所做的那样)?

【问题讨论】:

    标签: php httpcookie


    【解决方案1】:

    当您设置 cookie 时,它​​会存储到客户端浏览器中,如果您设置了 expire 参数,则 cookie 将在给定时间后从客户端计算机过期(删除),如果您将 cookie 设置为 0,则 cookie 将保留在客户端值为 0 的浏览器。

    【讨论】:

      【解决方案2】:

      将值设置为 "" 就可以做到这一点! cookie 仍然有效,但具有空白值。这是不好的做法,因为它为恶意代码打开了以后使用该 cookie 的大门。使 cookie 过期会将其过期时间设置为过去的某个时间点,从而使客户端浏览器无法使用 cookie。

      当过期时间设置为过去某个时间点时,Cookie 将被“销毁”。此时,客户端浏览器会忽略它们。

      【讨论】:

        【解决方案3】:

        重要的是,cookie 会过期,即使没有创建对服务器的 HTTP 请求(例如没有点击),但手动将其设置为空仅在请求执行期间发生

        这意味着,

        • 过期的 cookie 将在请求之间简单地“消失”
        • 到期发生在客户端,这意味着恶意或有问题的客户端将错误地兑现到期(或根本不兑现)

        所以您说的是服务器和客户端之间的不同责任分配。

        【讨论】:

          【解决方案4】:

          不确定“Expire”是什么意思,但如果它指的是 setcookie 的第三个参数,它应该是 int。

          这将在浏览器关闭时删除 cookie

          setcookie($cookie_name, $value, 0, {$path});
          

          setcookie($cookie_name, $value);

          这将保留 cookie,直到您希望它保留为止:

          $keep_cookie = 60*10; //10 minutes
          setcookie($cookie_name, $value, time()+$keep_cookie, {$path});
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-06-10
            • 2012-04-22
            • 1970-01-01
            • 1970-01-01
            • 2016-11-08
            • 1970-01-01
            • 2011-09-16
            • 2015-11-22
            相关资源
            最近更新 更多