PHP cookie未清除[不寻常的情况]


PHP Cookies Not Unsetting [Unusual Situation]

我有一个问题,一些cookie不设置。这个问题我已经看了一遍,但是所有的答案都不对。

我总共有13块饼干,我需要偶尔清理一下以进行测试。当我使用:

取消设置时
setcookie("name", "", time() - 3600, '/');

不寻常的是,使用不同名称的相同代码取消了13个cookie中的10个,留下3个仍然设置…所有的cookie都是在同一时间创建的,而我正试图同时解除它们的设置。我已经检查了cookie名称,这些名称都与存储在我PC上的内容相匹配。

如前所述,我尝试了上面链接的帖子中的所有答案,但没有一个有效。cookie在同一目录中设置和取消设置,只是权限级别相同的不同文件。

有什么建议吗?

(不确定是否重要,但我在Mac上使用Chrome)

的例子:在登录过程中设置cookie(我已经将其简化为我需要的4个关键cookie)

if($pass == 1) {
    setcookie('auth_code',$no_generator,$cookie_expire,'/');
    setcookie('username',$_POST['username'],$cookie_expire,'/');
    setcookie('admin',$admin,$cookie_expire,'/');
    setcookie('login_time',$date,$cookie_expire,'/');
    $_SESSION['logged_in'] = "true";
    header('Location: /logs.php');
}

复位饼干:

setcookie("admin", "", time() - 3600, '/');
setcookie("login_time", "", time() - 3600, '/');
setcookie("username", "", time() - 3600, '/');
setcookie("auth_code", "", time() - 3600, '/');

$cookie_expire设置为:$cookie_expire = time() + (21*365*24*60*60); .

您的代码在我的本地主机上运行良好。您是否尝试将cookie名称设置为数组?我对本地:

做了一些修改
<?php
    $pass=$_GET['pass'];
    if($pass == 1) {
        $a='A';
        $cookie_expire = time() + (21*365*24*60*60);
    setcookie('coo[auth_code]',$a,$cookie_expire,'/');
    setcookie('coo[username]',$a,$cookie_expire,'/');
    setcookie('coo[admin]',$a,$cookie_expire,'/');
    setcookie('coo[login_time]',$a,$cookie_expire,'/');
    //$_SESSION['logged_in'] = "true";
    header('Location: ./log.php');
}

然后使用循环

取消设置
foreach($_COOKIE['coo'] as $k=>$v){
    setcookie("coo[$k]", "", time() - 3600, '/');
}

为了以防万一,

Note from php.net
If the PHP directive register_globals is set to on then cookie values will also be made into variables. In our examples below,

$TestCookie将存在。建议使用$_COOKIE.