2010-12-16 49 views
2

为什么我不能删除这个Cookie?PHP - 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), '/'); 
+0

这不会直接回答你的问题,所以我不会把它作为答案,但是你为什么还要通过使用cookie *来使你的生活变得困难*,而不是仅仅在会话中做所有事情?你做事情的方式看起来更加复杂,我看不出这一点。如果你把它全部留在会话中,那么你可以只用'session_destroy',它们就完成了。 – 2010-12-16 11:27:48

+0

我似乎已经在同一时间回答你的想法:) – 2010-12-16 11:32:14

回答

1

状态是会话cookie吗?如果是,那么$_COOKIE['status']将不存在。 (这可能是为什么你的会议有问题,不能正常工作)。请确保你的页面顶部有第一个session_start()(这可能是你为什么会遇到问题)。

0

试试这个...

setcookie("status", "", time()-3600, ""); 
0

这是一个有点灰色地带。

首先需要注意的是,您正在尝试通过将cvookie设置为一小时前将其删除 - 但您的脚本在哪个时区运行?客户端在什么时区?

此外,我已经看到行为,似乎是由于浏览器挂到cookie,当到期时间随后设置为过去的日期(过去 - 不是时区的事情)。

仅存在一个cookie不应该被视为身份验证的证据 - 这应该是一个数据存储在服务器端的句柄。因此,解决方案是将Cookie的VALUE值覆盖为无意义值 - 而不是更改其到期时间。