PHP 设置 cookie 发布时间不会删除它
PHP setting cookie time to past wont delete it
我在取消设置 cookie 时遇到问题。目前,我无法注销。 Cookies 本身在验证用户会话时就像一个魅力。
因此,在第一次登录时,我以这种方式设置 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);
我在取消设置 cookie 时遇到问题。目前,我无法注销。 Cookies 本身在验证用户会话时就像一个魅力。 因此,在第一次登录时,我以这种方式设置 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);