2011-03-25 120 views
1

为什么使用PHP代码删除浏览器中的cookie值,我正在使用FireFox“View Cookies addon”查看cookie值。它只会在删除或手动清除我的浏览器cookie后才会消失。我问这个问题是因为我的工作只能在手动删除浏览器中的cookie后才起作用,如果我在PHP代码中未设置cookie并运行,它将无法工作,我将通过设置其过期值设置其过期日期来取消设置cookie值。示例:我使用解封饼干Cookie--为什么使用PHP代码删除浏览器后的Cookie显示

setcookie ('Event', '', time() - 3600, '/', '.example.com'); 

代码:我使用设置cookie的

setcookie ("myCookie", "", time() - 3600, "/", ".example.com"); 

代码

setcookie('Event', '-1-1301223453%7C9de8f7c08bf2be19c125f86ced33a0c2%7C1301050653%7C-1%7C1301223453', '', '/', '.example.com', 0); 

但是,如果我打印后的cookie值u它将是空白(没有),但它会显示在浏览器

请任何人帮忙!

+0

向我们展示了您用于取消设置Cookie以及设置它的代码。 – 2011-03-25 10:58:46

+0

你检查过你的系统时间吗? – Gumbo 2011-03-25 10:58:53

+0

回复!!我用于设置Cookie的代码: setcookie('Event','',time() - 3600,'/','.example.com');我使用的伸出,收藏的cookie 代码: 的setcookie( '事件', '-1-1301223453%7C9de8f7c08bf2be19c125f86ced33a0c2%7C1301050653%7C-1%7C1301223453', '', '/', '.example.com的',0) ; 但是,如果我打印后的cookie值未设置它将是空白的(没有),但它会显示在浏览器 – Saritha 2011-03-25 11:14:06

回答

0

关于尝试这种方法是什么?

// unset cookies 
if (isset($_SERVER['HTTP_COOKIE'])) { 
    $cookies = explode(';', $_SERVER['HTTP_COOKIE']); 
    foreach($cookies as $cookie) { 
     $parts = explode('=', $cookie); 
     $name = trim($parts[0]); 
     setcookie($name, '', time()-1000); 
     setcookie($name, '', time()-1000, '/'); 
    } 
} 
+0

为什么不使用'$ _COOKIE'? – Gumbo 2011-03-25 11:07:21

+0

根据php.net:如果cookie名称是数组表示法,例如:user [username] 然后PHP会自动在$ _COOKIE中创建一个对应的数组。而是使用$ _SERVER ['HTTP_COOKIE'],因为它镜像了实际的HTTP请求标头。 – 2011-03-25 11:08:37

2

这完全基于您正在查看的浏览器设置,并且您要求浏览器仍显示cookie。这是真的浏览器仍然显示cookie,但当你在PHP中检查cookie未被设置时,你会放松。

print_r($_COOKIE); 

告诉你活动的cookie。

请记住,当您从浏览器工具清除cookie时,cookie将被删除,但是当您从PHP中取消设置时,它们将被设置为过去的时间,而不会从浏览器历史记录中删除。

+0

感谢您的回复!如果我在打印之后打印cookie值,它将变为空白(无),但从浏览器中删除后,我的工作将正常工作,您能否提出任何解决方案。 – Saritha 2011-03-25 11:16:36

0

这可能有各种原因。首先,检查cookie是否被设置。然后确保它使用与cookie最初设置时相同的参数(除了过期)。而对于过期参数,使用值肯定是长期以往(一小时可能是太少了,如果你的服务器的时间是关闭的几个小时):

setcookie($cookieName, 'deleted', 1, $cookiePath, $cookieDomain); 
0

这里是有关删除Cookie一个简单的教程首先我们设置cookie值和过期日期。

setcookie('test', 'test', time() + 3600); 

访问的页面,你会看到cookie的“测试”已成功创建

然后,我们改变了PHP代码删除Cookie“测试”,只需设置一个传递日期值,它

setcookie('test', 'test', time() - 3600); 

访问的页面再次,你会发现该cookie“测试”已经

BTW:我是用火饼干延伸检查Cookie值。

希望这个简单的教程可以帮助你。