我正在探索Kohana框架的源代码,在浏览器上删除cookie时它有以下逻辑:
public static function delete($name)
{
// Remove the cookie
unset($_COOKIE[$name]);
// Nullify the cookie and make it expire
return setcookie($name, NULL, -86400, Cookie::$path, Cookie::$domain, Cookie::$secure, Cookie::$httponly);
}
我了解功能setcookie
会将Cookie的名称设置为deleted
(如浏览器Cookie视图中所示)并使其过期,以便浏览器不会将其发送到下一个时间。那么为什么unset
的第一部分存在呢?
答案 0 :(得分:1)
setcookie
将Cookie添加到HTTP 响应标头中。 $ _COOKIE提供来自请求标头的Cookie。因此setcookie
不会影响$ _COOKIE数组的cookie(在当前页面加载时)。因此我们必须在$ _COOKIE中取消设置cookie,以确保如果我们想要进一步获取它(在当前页面加载时),这个cookie将不会出现在$ _COOKIE数组中。
答案 1 :(得分:0)
两者都相同并删除cookie。如果我们删除未设置,肯定会工作并删除cookie。