2

为什么我不能删除这个 Cookie?

当用户登录时,authenticate_user() 运行。当用户注销 logout() 时运行。当类运行时,状态是通过 update_status() 生成的。

如何杀死状态cookie?无论我尝试什么,它都存在并且用户无法注销。

[删除代码]

解决了。

删除 cookie 时,您必须指定 cookie 可以访问的目录。

Not Deleted
setcookie("status", "", (time()+3600), '/');
setcookie("status", "", (time()-3600));

Deleted
setcookie("status", "", (time()+3600), '/');
setcookie("status", "", (time()-3600), '/');
4

3 回答 3

1

状态是会话cookie吗?如果是那么$_COOKIE['status']就不存在了。

用于session_destroy()删除它,但请确保您session_start()首先位于页面顶部(这可能是您遇到会话无法正常工作的问题的原因)。

于 2010-12-16T11:24:40.993 回答
0

试试这个...

setcookie("status", "", time()-3600, "");
于 2010-12-16T11:30:13.210 回答
0

这是一个灰色地带。

首先要注意的是,您试图通过将 cvookie 的到期时间设置为一小时前来删除它——但是您的脚本在哪个时区运行?客户在哪个时区?

此外,我还看到当到期时间随后设置为过去的日期(很久以前 - 不是时区的事情)时,浏览器挂在 cookie 上似乎可以解释这种行为。

cookie 的存在绝不应被视为身份验证的证据 - 这应该是存储在服务器端的数据的句柄。所以解决方案是将cookie的VALUE覆盖为一个无意义的值——而不是改变它的到期时间。

于 2010-12-16T11:32:27.980 回答