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