PHP Cookies没有取消[不寻常的情况]

时间:2015-07-29 16:54:29

标签: php cookies

我有一些问题,一些饼干没有取消。我查看了this question,但所有答案都没有用。

我总共有13个饼干,我需要清除偶尔进行测试。当我使用以下方法取消它们时:

setcookie("name", "", time() - 3600, '/');

使这一点与众不同的是,使用不同名称的相同代码会取消13个cookie中的10个,剩下3个仍然设置...所有cookie都是同时创建的,我试图将它们全部取消同一时间。我检查了所有与我PC上存储的名称相匹配的cookie名称。

如前所述,我已经尝试过上面链接的帖子中的所有答案,但没有一个有效。 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');
}

取消设置Cookie:

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);

1 个答案:

答案 0 :(得分:0)

您的代码在我的localhost中运行良好。 你尝试将cookies名称设为数组吗?我为我的当地做了一点修改:

<?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。