2014-02-11 52 views
0

我探索的Kohana框架的源代码,它有删除对浏览器的cookie时以下逻辑:为什么没有设置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(如浏览器cookies视图中所示)并将其过期,以便browswer下次不发送。那么为什么unset的第一部分在那里呢?

回答

1

setcookie将cookie添加到HTTP 响应标头。鉴于$ _COOKIE提供来自请求标头的Cookie。所以setcookie不会影响$ _COOKIE数组的cookie(在当前页面加载时)。因此,为了确保这个cookie不会出现在$ _COOKIE数组中,我们必须在$ _COOKIE中取消设置cookie,如果我们想要进一步获取它(在当前页面加载时)。

+0

ok,那么为什么要从$ _COOKIE中删除cookie,如果它代表当前请求并且此请求包含cookie? –

+0

我认为它应该很清楚)我们必须在$ _COOKIE中取消设置cookie,以确保将此cookie从$ _COOKIE数组中删除。 – hindmost

+0

_为了确保从$ _COOKIE数组中删除此cookie,我们为什么需要确保这一点? –

0

两者都相同并删除co​​okie。如果我们删除未设置,当然它会工作并删除co​​okie。

相关问题