我有一个问题,一些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.