【问题标题】:Clear PHP Cookies array清除 PHP Cookies 数组
【发布时间】:2015-06-22 06:03:31
【问题描述】:

我知道如何在数组中设置 PHP cookie,但我可以在没有循环的情况下清除它吗?
比如我设置了这四个cookie

// set the cookies
setcookie("cookie[four]", "cookiefour");
setcookie("cookie[three]", "cookiethree");
setcookie("cookie[two]", "cookietwo");
setcookie("cookie[one]", "cookieone");

// after the page reloads, print them out
if (isset($_COOKIE['cookie'])) {
    foreach ($_COOKIE['cookie'] as $name => $value) {
       $name = htmlspecialchars($name);
       $value = htmlspecialchars($value);
       echo "$name : $value <br />\n";
    }
}

输出:
四:cookiefour
三:cookiethree
二:cookietwo
一:cookieone

要清除 cookie,我使用以下循环

if (isset($_COOKIE['cookie'])) {
    foreach ($_COOKIE['cookie'] as $name => $value) {
        setcookie ("cookie[".$name."]", "", time() - 1);
    }
}

有什么方法可以在没有循环的情况下清除 cookie?提前致谢

【问题讨论】:

    标签: php arrays cookies


    【解决方案1】:

    不,您几乎需要遍历现有的 cookie,因为您在代码中通过 setcookie 删除/过期 cookie 的方式是一次一个 cookie。

    【讨论】:

    • 我还以为有 ClearAllCookies(); 之类的函数在 PHP 中哈哈
    【解决方案2】:

    可以试试

    if (isset($_COOKIE['cookie'])) {
        setcookie ("cookie", array());
    }
    

    甚至

    if (isset($_COOKIE['cookie'])) {
        setcookie ("cookie", array('one'=>'','two'=>'','three'=>'','four'=>'',));
    }
    

    如果你需要索引

    【讨论】:

    • 警告:setcookie() 期望参数 2 为字符串
    • 检查了 php.net 上的文档,看起来 @JBzd 是正确的。您必须单独删除 cookie 数组的每个元素。
    猜你喜欢
    • 2017-02-14
    • 1970-01-01
    • 2017-07-26
    • 2018-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 2014-11-20
    相关资源
    最近更新 更多