2011-10-07 63 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