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


PHP setting cookie time to past wont delete it

我在取消设置 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

根据我在周围阅读的内容,这应该可以工作并删除cookie,但是它们不会:(

您必须确保 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);