PHP Cookie 销毁不起作用,我做错了什么?

标签 php .htaccess mod-rewrite cookies

我正在使用 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/

相关文章:

php - 列名称中的连字符会破坏 Wordpress 中的功能

php - 保持代码、数据库结构和数据库数据在修订之间同步

linux - .htaccess 文件在 apache 上不起作用

apache - 如何使用 mod_rewrite 在内部重写/到/homepage

php - Mysql数据库自增id不按升序自增

php - 如何解决错误 QXcbConnection : Could not connect to display when using exec function for phantomJs using PHP

php - Zend Framework 应用程序中的 "session has already been started...."异常

php - 第一个单词后就断掉了

php - 在子目录中搜索页面,并在友好 URL (htaccess) 中使用额外参数

python - 配置 htaccess 以提供静态 django 文件