2014-02-11 74 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。

相關問題