PHP:过期与清除cookie

时间:2013-05-09 21:47:59

标签: php httpcookie

一个非常新手的问题,但与我裸露......

关于使用PHP创建cookie,使用'setcookie'的'expire'参数和将cookie设置为“”之间有什么区别?换句话说,我有一个收集信息的cookie,在某些时候我将获取所有这些信息并发送它,在那之后我想基本上破坏cookie。由于(根据我的理解)cookie存储在客户端,我的选项是Expire或设置为“”。从我读到的内容来看,'Expire'只是将cookie设置为0,所以它只是关于值; int 0还是空字符串?

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

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

这意味着,

  • 即将到期的Cookie只会在请求之间“消失”
  • 在客户端上发生过期,这意味着恶意或错误的客户将错误地(或根本不会)过期。

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

答案 3 :(得分:0)

不确定“Expire”是什么意思,但如果它指的是setcookie的第3个参数,那么它应该是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});