2

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

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

4

4 回答 4

2

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

于 2013-05-09T21:52:53.790 回答
1

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

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

于 2013-05-09T21:50:39.453 回答
0

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

这意味着

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

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

于 2013-05-09T21:54:10.310 回答
0

不确定您所说的“过期”是什么意思,但如果它指的是 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});
于 2013-05-09T21:56:18.240 回答