偶尔发现系统里有一些cookie的值为deleted,然后就研究了一下,颇有所获;下面就分享一下如何使用PHP删除cookie
1. setcookie("name",""); 方式删除cookie时,PHP将cookie的值设置为deleted,过期时间设置为一年前的该时刻;如果用户的时间为两年前,则该cookie没有被删除,而是将值设置为了deleted;比较靠谱的删除cookie的方法为:
setcookie("name","deleted",1,path,domain);
注意:cookie的值可以不是deleted,但是不能为空,否则,时间参数将不被参考。
2. 浏览器识别删除cookie的逻辑: 浏览器不关心cookie的值是什么,如果过期时间小于当前时间,就删除该cookie,否则认为是设置cookie
关于cookie的secure属性和Httponly属性
只要cookie的name、path、domain相同,就是同一个cookie; 设置cookie时如果使用了secure或Httponly关键字,则删除的时候不需要这些关键字也能删除cookie
关于cookie与https
1. http的请求可以设置secure属性的cookie(只是自己设置的自己却得不到,没人这么用的);
2. http的请求也可以删除secure属性的cookie; 如果你需要先得到要删除的cookie做点儿什么然后再删除的话,走http删除https的cookie就不行了