什么可能是为什么饼干不会被销毁?

时间:2009-05-23 00:42:41

标签: php

我有一个名为MVCID的cookie,它的值是一些生成的哈希值。 当我写这个

setcookie("MVCID","", time()-60*60*24); 

并加载页面,不仅没有删除cookie的内容,而且它也不会死亡。

可能出现什么问题?这不是第一次发生这种情况。

ps:我也在空白页面上尝试这个,没有其他代码,但是它仍然不会死。

3 个答案:

答案 0 :(得分:1)

尝试传递“/”作为第四个参数 - 路径

答案 1 :(得分:0)

您是否在输出任何HTML之前调用此函数?这是一个众所周知的问题,因为cookie必须出现在HTTP头中。

您可能还想检查客户端的时间。即使您设置为在一天前过期,时钟偏差可能会更大(如果时间设置不正确)。

我更喜欢填充所有参数,而不是依赖默认值(可以根据很多事情进行更改)。

此外,您可能想查看返回代码,虽然我不知道它是如何失败的,例如:

<?php
    $ret = setcookie("MVCID","", time()-60*60*24);
?>
<html>
    <head></head>
    <body>
        Hello<br>
        <pre>
            <?php
                print_r ($ret);
            ?>
        </pre>
    </body>
</html>

如果做不到这一点,您可能需要了解线路级别的情况。换句话说,检查HTTP响应以确保HTTP标头中有Set-Cookie并检查与其一起传递的实际值。

最后一个尝试的技巧:完全删除cookie并退出浏览器(其中一些缓存在内存中)。然后再试一次。如果PHP setcookie无法正常工作,那么将不会创建任何cookie - 您所拥有的未被更改或过期的cookie可能会从之前成功的代码变体中遗留下来。

答案 2 :(得分:0)

使用类似firebugfiddler的内容来检查实际的响应标头(包含“真实”Cookie和包含“删除”Cookie的标头)