dongxi4235
2014-02-11 17:02
浏览 92
已采纳

删除cookie时为什么取消设置cookie变量

I'm exploring the source code of Kohana framework, and it has the following logic when deleting the cookie on browser:

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);
    }

I understand that the function setcookie will set cookie's name to deleted (as displayed in browser cookies view) and expire it so that the browswer doesn't send it next time. So why is the first part with unset is there?

图片转代码服务由CSDN问答提供 功能建议

我正在探索Kohana框架的源代码,它在浏览器上删除cookie时有以下逻辑:

  public static function delete($ name)
 {
 //删除cookie 
 unset($ _ COOKIE [$ name]); 
 
 //  Nullify cookie并使其过期
返回setcookie($ name,NULL,-86400,Cookie :: $ path,Cookie :: $ domain,Cookie :: $ secure,Cookie :: $ httponly); 
} 
    
 
 

我知道函数 setcookie 会将cookie的名称设置为 deleted (如浏览器cookie视图中所示)和 将它过期,以便浏览器下次不发送它。 那么为什么 unset 的第一部分存在?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dqc42632 2014-02-11 17:07
    已采纳

    setcookie add cookie to HTTP response headers. Whereas $_COOKIE presents cookies from request headers. So setcookie doesn't affect on cookies of $_COOKIE array (on the current page load). Therefore we have to unset cookie in $_COOKIE too in order to ensure that this cookie won't present in $_COOKIE array if we'll want to get it in further (on the current page load).

    打赏 评论
  • duanquan1876 2014-02-11 17:15

    both are same and deleting cookie. If we remove unset, Surely it will work and delete the cookie.

    打赏 评论

相关推荐 更多相似问题