你好,我正在疯狂地通过一个问题,我试图获取。
我不能删除将在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时设置路径,否则它将不会销毁