【问题标题】:php: how to correctly remove all cookies?php:如何正确删除所有 cookie?
【发布时间】:2016-09-19 09:20:15
【问题描述】:

理想情况下,要在 php 中删除 cookie,应该在创建 cookie 时设置完全相同的参数,除了值和过期时间:

创建 cookie:

setcookie('cookie1', 'value1', time()+10000, '/', 'domain.com', false, true);

删除 cookie:

setcookie('cookie1', '', time()-10000, '/', 'domain.com', false, true);

但是,当我想删除 cookie 时,如何获取设置的参数?假设我没有跟踪这些参数,例如,cookie 是使用某些第三方库创建的

是的,有删除方法:

setcookie($name, '', time() - 1000, "/");
setcookie($name, '', time() - 1000);

但这是“理想的”正确方法吗?所有浏览器(包括旧的)都支持这个吗?

无论如何,为所有浏览器正确删除所有cookie的方法是什么

如何设置完全相同的参数来删除 cookie(如果我不跟踪 cookie 创建)?

【问题讨论】:

  • “如果我不跟踪 cookie 创建”
  • @nogad,没找到你
  • @nogad 他知道他在代码中创建的 cookie 使用了哪些参数,但如果 cookie 是由第三方库创建的,他不知道使用了哪些参数。
  • 抱歉,我在写的时候被叫走了。
  • 如果一个库创建 cookie,并且它不使用默认参数,我希望它为您提供一种配置参数的方法。例如,PHP 的 session_set_cookie_paramssession_get_cookie_params 用于 PHPSESSID cookie。

标签: php cookies


【解决方案1】:
if (isset($_SERVER['HTTP_COOKIE'])) {//do we have any
    $cookies = explode(';', $_SERVER['HTTP_COOKIE']);//get all cookies 
    foreach($cookies as $cookie) {//loop
        $parts = explode('=', $cookie);//get the bits we need
        $name = trim($parts[0]);
        setcookie($name, '', time()-1000);//kill it
        setcookie($name, '', time()-1000, '/');//kill it more
    }
}

来自笔记:http://php.net/manual/en/function.setcookie.php

【讨论】:

    猜你喜欢
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 2011-05-27
    • 2012-11-18
    • 2011-01-19
    • 2013-03-15
    相关资源
    最近更新 更多