0

我想删除一个 cookie,但它不起作用。

这是代码,有什么想法吗?

    setcookie("candidate_site_search", serialize($model->getAttributes()), strtotime('next year'), '/');

    if (isset($_GET['clearFilters']) && ($_GET['clearFilters'] == 1)) {
        //die('cf');
        $model->unsetAttributes();
        setcookie("candidate_site_search", serialize($model->getAttributes()), time() - 60 * 60 * 24 * 30);
        if (isset($_COOKIE['candidate_site_search']))
            unset($_COOKIE['candidate_site_search']);
        if (isset($_COOKIE['site_search']))
            unset($_COOKIE['site_search']);
        $this->redirect(array('/candidate/search'));
    }

删除后,我重定向到请求来自的相同 url。

仍然没有任何反应

ps:我觉得这个cookie跟查克·诺里斯有关,或者至少跟超人有关……

4

1 回答 1

2

问题很可能出在您在服务器上设置的日期/时间与客户端上的时间相关。

例如,如果您的服务器是 GMT+2 而您的客户端是 GMT,那么上面的代码将告诉客户端在 GMT+1 使 cookie 过期,这仍然是客户端的未来。

只需使用过去的时间,就可以消除任何时区问题:

setcookie("name_of_cookie", "", time() - 60 * 60 * 24 * 30); // should  do it
于 2013-03-18T08:05:32.923 回答