3

使用新的 Cookie 法,我试图找到一种方法,可以使用 PHP 脚本从我的站点中删除所有 cookie。我有一个有效的脚本,但它不会删除谷歌分析 cookie。

如何删除谷歌分析 cookie?

foreach($_COOKIE as $key => $value) {
      setcookie($key, '', time()-1000);
      setcookie($key, '', time()-1000, '/');
  }
4

4 回答 4

6

您需要将域作为第 5 个参数传递...

 setcookie($key, '', time()-1000, '/', '.domain.com');
于 2012-05-31T15:05:33.457 回答
2

无法删除属于不同域 .google 的客户端浏览器上的 cookie,但您可以让用户选择添加分析代码。

第一步是使用 PHP 检查dnt标头[示例函数],许多浏览器已经支持这个 + AVG 有这个作为浏览器插件,如果它存在则默认不添加 js 代码。或者,如果未设置 dnt 标头,则您可以提示用户您的跟踪/分析 cookie,然后将选择存储在 cookie 或会话中。

于 2012-05-31T15:22:43.723 回答
1

通常,Firefox 会显示 cookie 是设置在 www.yourdomain.com 还是 domain.com 下。在我的例子中,谷歌分析 cookie 是为 domain.com 设置的。这段代码完成了这项工作,删除了所有 3 个与 Google 相关的 cookie:

foreach ( $_COOKIE as $key => $value ){
if($_POST[$key]==1){
unset($_COOKIE[$key]);
if($key=='language'  || $key=='currency'){
setcookie($key, null, -1, '/', 'www.mydomain.com');
}else if($key=='_ga' || $key=='_gid' || $key == '_gat_gtag_UA_whatever_1' ){
setcookie($key, null, -1, '/', '.mydomain.com');
}else{
foreach ( $_COOKIE as $key => $value ){
if($_POST[$key]==1){
unset($_COOKIE[$key]);
if($key=='language'  || $key=='currency'){
        setcookie($key, null, -1, '/', 'www.mydomain.com');
}else if($key=='_ga' || $key=='_gid' || $key == '_gat_gtag_UA_whatever_1' ){
        setcookie($key, null, -1, '/', '.mydomain.com');
}else{
        setcookie($key, null, -1, '/');
}
$n++;
}
}

我让它以表单操作的形式运行,其中列出了当前存储在客户端浏览器中的所有 cookie,并让他选择要删除的 cookie。选择的那些以 $_POST[$key]==1 的形式出现,然后由脚本处理。未选中的保持活力。这是针对 OpenCart 下的在线商店的。不用说,将“mydomain.com”替换为您的,并将跟踪 cookie 中的“whatever”替换为您的 Google 帐号。

于 2018-05-12T17:20:20.883 回答
0
foreach($_COOKIE as $key => $value) {    
    setcookie($key, '', time()-1000, '/', '.domain.com');
}

上面的例子对我不起作用——所有其他的 cookie 都被删除了,只剩下 GA 的。有人知道为什么这可能是更好的方法吗?

于 2012-06-27T09:47:02.437 回答