Cookie - 为什么cookie在使用PHP代码删除后会在浏览器中显示

时间:2011-03-25 10:56:02

标签: php cookies session-cookies

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

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

我用于设置cookie的代码:

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

我用于取消设置Cookie的代码:

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

但如果我在取消设置后打印cookie值,它将为空白(无),但会在浏览器中显示

请任何人帮忙!!

5 个答案:

答案 0 :(得分:2)

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

print_r($_COOKIE);

显示活动Cookie。

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

答案 1 :(得分:0)

使用setcookie("myCookie");

删除Cookie

答案 2 :(得分: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, '/');
    }
}

答案 3 :(得分:0)

这可能有各种原因。首先,检查cookie是否完全设置。然后确保它使用与最初设置cookie时相同的参数(到期时间除外)。对于到期参数,请使用过去肯定很长的值(如果服务器的时间在几个小时后关闭,则一小时可能会太少):

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

答案 4 :(得分:0)

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

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

访问该页面,您将看到cookie'test'已成功创建

然后,我们更改php代码以删除cookie'test',只为它设置一个传递的日期值

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

再次访问该页面,你会发现cookie'test'已经消失了

btw:我使用fire cookie扩展来检查cookie值。

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