已编辑,请看结尾
我有一个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, '/', '');
希望这有帮助!
答案 0 :(得分:1)
您需要匹配在销毁Cookie时用于创建Cookie的域和路径。这是因为正如您所发现的那样,可以为同一个域创建一个具有相同名称和不同范围的cookie。在销毁cookie时,您必须匹配用于创建cookie的范围,以便客户端知道要销毁哪个。
尝试:
setcookie('abonnement_cookie', '', time() - 3600, '/', 'abonnement.mywebsite.com');