过期vs.清除cookie


Expire vs. clearing a cookie

关于使用PHP创建cookie,使用'setcookie'的'expire'参数和将cookie设置为"之间有什么区别?换句话说,我有一个收集信息的cookie,在某个时候,我将获取所有这些信息并发送它,在那个点之后,我想基本上销毁这个cookie。因为(从我的理解)cookie存储在客户端,我的选项是过期或设置为"。从我读到的,'Expire'只是将cookie设置为0,所以它只是相对于值;整型0还是空字符串?

还有一个关于扩展原始问题的问题。AKA如果我有一个问题,我张贴,然后想问一个类似的问题,我编辑原来的问题,并添加这个新的部分或开始一个新的问题(就像我在这里做的)?

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

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

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

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

这意味着

  • 即将过期的cookie将在请求之间"消失"
  • 到期发生在客户端,这意味着恶意或有bug的客户端将错误地(或根本不)履行到期

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

不知道你说的"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});