我正在使用 RewriteRule 在 htaccess 中创建 cooking 。在我的测试中,我根本无法让这个 cookie 消失。以下是我创建 cookie 的方法,我在 this thread 中得到了帮助。 :
[L,CO=redirect_indicator:yes:.www.example.com,R=301]
因此 cookie 具有默认的过期时间,该时间应仅在浏览 session 的持续时间内有效。我试图在脚本末尾销毁它,但得到的结果令人困惑。
因此,我将在脚本顶部执行此操作,以查看用于测试目的的 cookie:
var_dump($_COOKIE['redirect_indicator']);
然后在我的脚本末尾,我运行以下命令(在 another stack thread here 的帮助下)我也尝试过比这更简单的销毁脚本,但似乎没有一个能解决问题:
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, '/');
}
}
现在,在该代码部分之后,我还再次运行此代码:
var_dump($_COOKIE['redirect_indicator']);
事实上 cookie 不存在!这很棒,但是当我在不应生成 cookie 的页面上再次运行脚本时,cookie 仍然会在我的第一个 var_dump 期间显示。
无论如何,有没有办法摆脱这个cookie,或者我将永远受到浏览器存储的内容的摆布。当我重新启动浏览器时它确实消失了,但我需要在脚本执行后这个东西消失。
最佳答案
setcookie($name, '', time()-1000);
上面确实设置了过去的过期时间,这是删除 cookie 的唯一方法 - 但是,在所有浏览器窗口关闭之前,cookie 不会从用户计算机中删除。
如果您需要 cookie 不再影响脚本,请将值重置为稍后可以定义为异常的值,例如“删除”
if(isset($_COOKIE['redirect_indicator']) && $_COOKIE['redirect_indicator'] !== 'delete')
关于PHP Cookie 销毁不起作用,我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10128248/