2012-01-13 86 views
0

編輯,看看到底更改cookie的域名,但舊Cookie仍在使用

我得到了一個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

謝謝!

編輯:

我發現這個問題,餅乾與「主機」,而不是「域」創建。

要使用當前的主機,你需要指定「」爲域名:

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

希望這有助於!

回答

1

您需要匹配銷燬cookie時用於創建cookie的域和路徑。這是因爲如您所發現的,可能爲同一個域使用相同名稱和不同範圍的Cookie。銷燬cookie時,必須匹配用於創建它的範圍,以便客戶知道要銷燬哪一個。

嘗試:

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

也不管用,但設置cookie後,我重定向到同一頁,因此如果沒有這個cookie的頁面重新加載(餅乾刪除)。不幸的是,cookie仍然存在。 – Tiois 2012-01-13 18:22:21

+0

就這樣,當我嘗試去做的時候,你已經明白了,cookie_domain現在被設置爲.mywebsite.com,但是我試圖刪除的cookie位於abonnement.mywebsite.com上。我試圖在訪問abonnement.mywebsite.com網址時刪除這個cookie,但它不起作用。 – Tiois 2012-01-13 18:25:09

+0

我發現問題,cookie是用「主機」而不是「域」創建的。 要使用當前主機,您需要指定''爲域: setcookie('abonnement_cookie',0,time() - 3600,'/',''); 希望這有助於! – Tiois 2012-01-13 18:47:05