【问题标题】:Can cookies created by one php web page can be deleted by another php webpage?一个php网页创建的cookies可以被另一个php网页删除吗?
【发布时间】:2013-12-01 22:08:27
【问题描述】:

我创建了一个创建 cookie 的 php 网页。该网页将用户重定向到另一个(第二个)php网页。在第二个网页上,我试图删除由第一页创建的 cookie。但是cookie没有被删除。第二个网页显示“无法修改标题信息”之类的错误

我用于删除该 cookie 的 php 代码格式如下:

if(isset($_COOKIE['cookieName']))
{
setCookie('cookieName','values',time()-3600,'/','example@domain.com',0);
}

【问题讨论】:

  • 请仔细阅读错误信息。它清楚地解释了您的setcookie 呼叫失败的原因和位置。 (当然,您的问题的答案是“是”——cookie 不是只读的。)

标签: php cookies


【解决方案1】:

我希望你正在使用 unset()

这样做

if(isset($_COOKIE['cookieName']))
{
unset($_COOKIE['cookieName']));
}

【讨论】:

    【解决方案2】:

    在 HTTP 标头中设置 cookie。此标头在页面的实际内容之前发送。因此,您只能(取消)设置尚未发送任何输出的cookie。

    这在setcookie documentation中也有说明:

    与其他标头一样,Cookie 必须在您的任何输出之前发送 脚本(这是协议限制)。这需要您放置 在任何输出之前调用此函数,包括和 标签以及任何空格。

    例如:

    <?php
        if (isset($_COOKIE['cookieName'])) {
            unset($_COOKIE['cookieName']);
            setcookie("cookieName", "", time()-3600);
        }
    ?>
    <html>
      ....
    </html>
    

    (另见问题Remove a cookie。)

    【讨论】:

    • 那么我的问题的完整解决方案是什么?我应该如何删除这个 cookie?
    • @user3001654 我添加了一个示例。这有帮助吗?
    • 是的,它应该可以工作,我理解你的意思。我希望今天我会实施它。谢谢。
    【解决方案3】:

    你可以试试这个,

     unset($_COOKIE['cookieName']);
     setcookie('cookieName', null, -1, '/');
    

    路径: cookie 可用的服务器上的路径。如果设置为“/”,cookie 将在整个域中可用。如果设置为 '/foo/',cookie 将仅在 /foo/ 目录和域的 /foo/bar/ 等所有子目录中可用。默认值是设置 cookie 的当前目录。

    域: cookie 可用的域。将域设置为“www.example.com”将使 cookie 在 www 子域和更高的子域中可用。可用于较低域的 Cookie,例如“example.com”,将可用于较高的子域,例如“www.example.com”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      • 2012-10-14
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      相关资源
      最近更新 更多