更改了cookie域,但仍使用旧cookie

时间:2012-01-13 17:18:59

标签: php session-cookies

已编辑,请看结尾

我有一个Symfony 1.2项目,该项目在两个域上运行(每个域使用不同的应用程序):www.mywebsite.com和abonnement.mywebsite.com

我在每个应用中都有两个不同的Cookie名称/域名。

我们决定为这两个应用使用相同的Cookie。因此,我编辑了两个应用程序的配置并将cookie_domain设置为.mywebsite.com,并在两个应用程序中将cookie_name设置为mywebsite_cookie。

问题在于,当我访问abonnement.mywebsite.com时,会使用旧的cookie。在我的浏览器中手动删除此cookie可以解决问题,但是这个网站上有成千上万的用户,我想知道是否有手动删除此cookie的解决方案。

我试过了:

if (isset($_COOKIE['abonnement_cookie'])) {
    ini_set('session.cookie_domain', 'abonnement.mywebsite.com);
    setcookie('abonnement_cookie', '', time() - 3600, '/');
    $this->redirect('@internet_etape_1');
}

但没有成功。

有办法吗?

我正在使用Firefox 9.0.1

谢谢!

修改

我发现了问题,cookie是使用“主机”创建的,而不是“域”。

要使用当前主机,您需要指定''as domain:

setcookie('abonnement_cookie', 0, time() - 3600, '/', '');

希望这有帮助!

1 个答案:

答案 0 :(得分:1)

您需要匹配在销毁Cookie时用于创建Cookie的域和路径。这是因为正如您所发现的那样,可以为同一个域创建一个具有相同名称和不同范围的cookie。在销毁cookie时,您必须匹配用于创建cookie的范围,以便客户端知道要销毁哪个。

尝试:

setcookie('abonnement_cookie', '', time() - 3600, '/', 'abonnement.mywebsite.com');