PHP设置过去的cookie时间不会删除它

时间:2015-01-22 18:28:29

标签: php cookies

我遇到了取消设置Cookie的问题。目前,我无法退出。在验证用户会话时,Cookie本身就像一个魅力。 所以在第一次登录时我会以这种方式设置cookie(成功登录时):

$cookie_username = $username;
$cookie_password = sha1(md5($password));
$cookie_value = 'username='.$cookie_username.'&hash='.$cookie_password;
$cookie_name = 'remember_me@website';
$cookie_time = time() + 31536000;
setcookie($cookie_name, $cookie_value, $cookie_time, '/', '.website.com');

上面的Cookie运行良好,我没有阅读它们的问题。

这是我的退出代码:

setcookie($cookie_name, '', time()-3600, '/', '.website.com');
unset($_COOKIE[$cookie_name]);
unset($_SESSION['username']);    \
unset($_SESSION['loggedin']);    / were setted after successful login

根据我所读到的内容,这应该可以工作并删除co​​okie,但是他们不会:(

1 个答案:

答案 0 :(得分:2)

您必须确保Cookie的名称,域名,路径甚至安全设置都与您尝试删除的内容完全相同。

如果你创建了这样的cookie:

setcookie('name', 'value', time()+3600);

然后尝试删除它:

setcookie('name', 'value', time()-3600, '/', '.website.com');

那不会奏效。您必须具有与创建cookie时使用的完全相同的参数。

如果您在JavaScript中创建了Cookie,请在那里仔细检查您的设置。

作为测试,请尝试以下所有代码。如果它有效,请逐一注释掉,直到你只剩下那个有效的那个:

setcookie($cookie_name, '', time()-3600);
setcookie($cookie_name, '', time()-3600, '/');
setcookie($cookie_name, '', time()-3600, '/', '.website.com');
setcookie($cookie_name, '', time()-3600, '/', '.website.com', 1);