2011-10-07 68 views
1

我是Cookie新手。我創建了一個用戶登錄php類,該類使用cookie來存儲唯一的MD5密鑰以記住已登錄的用戶。但是,當用戶註銷時,Cookie不會被重置。我從堆棧溢出中找到的代碼創建了一個函數,以清除註銷時的cookie。未在PHP中重置Cookie

static public function clearCookies() 
{ 
    $past = time() - 3600; 
    foreach ($_COOKIE as $key => $value) 
    { 
      $value = ''; 
     setcookie($key, $value, $past); 
     setcookie($key, $value, $past, '/'); 
    } 
} 

但是,cookie仍未被清除。

這是代碼設置cookie

setcookie("auth_key", $authKey, time() + 60 * 60 * 24 * 7); 

由於行時間提前

回答

1

這是有效的解決方案。

我改變

setcookie("auth_key", $authKey, time() + 60 * 60 * 24 * 7); 

setcookie("auth_key", $authKey, time() + 60 * 60 * 24 * 7, '/'); 

看來,餅乾沒有被重置,因爲它被重置的URL從比它被設置在url不同。加入後'/'可以從新的url重置。

1

嘗試添加

static public function clearCookies() 
{ 
    $past = time() - 3600; 
    foreach ($_COOKIE as $key => $value) 
    { 
      $value = ''; 
     setcookie($key, $value, $past); 
     setcookie($key, $value, $past, '/'); 
     unset($_COOKIE[$key]); 
    } 
} 

你必須要注意的是改變cookies是可讀之後,發送他們到客戶端(如果您不通過$ _COOKIE手動設置它們),那麼下一次刷新。

+0

'unset($ _ COOKIE [$ key])'如何有益於這種情況? – webbiedave

+0

我領先於自己。試過它在現場服務器上沒有工作。 – simpleengine

+0

@webbiedave:用戶無需重新加載頁面以查看其他代碼的更改 – genesis