我有一些问题,一些饼干没有取消。我查看了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);
。
答案 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。