删除cookie无效


delete cookie does not work

你好,我正在疯狂地通过一个问题,我试图获取。

我不能删除将在index.php上设置的cookie:

$a = 'text';
setcookie('name_of_cookie', $a, time()+60*60*24*365);

在page-php我可以调用cookie和内容像$a。我试过用不同的方式在page。php中删除它,像这样:

setcookie('name_of_cookie', FALSE, time()-3600);

我还发现了一个版本,我只把它设置为:

setcookie('name_of_cookie');

what将设置另一个具有相同名称的cookie,就像我在浏览器的设置中看到的那样。这个新的cookie没有内容——当然,没有声明内容。

我也试图设置一个更高的时间在过去,因为服务器的位置,但这不起作用。甚至尝试将时间设置为仅1也不起作用。

我检查了几次名字的拼写,没有因为不同的名字而出现错误。

如果有人能告诉我我做错了什么,我会很高兴的。

谢谢。

当您设置cookie 时,请非常具体地设置它们总是设置域名(可以从$_SERVER['SERVER_NAME']中获取)和路径(我通常设置为"/")。如果你言行不一,就会有"聪明"的东西主动出击,打破你的逻辑。当您在JS中设置cookie并试图从PHP中删除它们(或相反)时,通常会发生这种情况。您可能有多个具有相同名称但不同子域或路径的cookie。

例如,您可以这样设置cookie:

setcookie( 'Foo', 'Bar', time() + 3600, '/', $_SERVER['SERVER_NAME'] );

然后像这样取消设置:

setcookie( 'Foo', '', time() - 999999, '/', $_SERVER['SERVER_NAME'] );

错过最后两个参数会让你陷入现在的境地。

按如下方式删除所有cookie

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, '/');
    }
}

总是在设置cookie时设置路径,否则它将不会销毁