2013-03-07 98 views
1

我有一個奇怪的問題,似乎只發生在鉻。基本上我設置了一個cookie來記住一個ID,這樣我就可以在用戶訪問我的網站時向用戶顯示正確的信息。cakephp 2餅乾不適用於Chrome或IE瀏覽器只有

在我的控制器動作:

$currentcookie = $this->Cookie->read('mixes'); 
if ($currentcookie == '') { 
    //write a new cookie with a new id etc 
} else { 
    //show them info relating to the id in the cookie 
} 

所以,如果它是由一個人的第一次訪問,如果($ currentcookie ==「」)應該評估爲true,一個新的Cookie應創建。如果已經有一個cookie'else'運行。

我在視圖中輸出了id,所以我知道它是否是新創建的,它應該在第一次訪問時保留,但在後續訪問時應該保持不變。

這適用於FF Opera和safari,但奇怪的不是Chrome或IE。我沒有關閉瀏覽器或任何東西。我錯過了什麼?

NEW ---這裏是我如何讀取和寫入的cookie:

$currentcookie = $this->Cookie->read('mixes'); 

$this->Cookie->write('mixes', array('idofthemix' => $newTempMixId)); 

在我的AppController我在之前過濾:

$this->Cookie->name = 'tempmix'; 
    $this->Cookie->time = '30 days'; // or '1 hour' 
    $this->Cookie->domain = 'localhost'; 
    $this->Cookie->key = 'li8&*^iih^456%$^%[email protected]#@##@@:LLLkjljkjlj87^*&^*6768!£"&^*()%$&'; 
    $this->Cookie->httpOnly = true; 

所以它顯示出來大多數瀏覽器作爲tempmix [混合],例如Q2FrZQ%3D%3D.b8LRe4GareCnq54%3D。只是沒有在Chrome瀏覽器或IE瀏覽器

+0

是否有可能命名爲「ID」與其他一些餅乾中存在的問題的瀏覽器被設置發生衝突?它是否會改變任何東西,如果你使用一個真正的唯一標識符如「jgfchgmf655-id」? – Stuart 2013-03-07 00:24:59

+0

不好意思,幫不上忙 – 2013-03-07 00:33:14

+0

@crazysarah你好嗎_writing_餅乾 – 2013-03-07 00:41:20

回答

1

檢查您的瀏覽器設置,有時瀏覽器設置爲不允許任何cookie。

另外,嘗試手動到每個瀏覽器中的cookies列表,並查看您的網站cookie是否存在與否。 (每個瀏覽器都有不同的訪問方式)

值得一提的是,一些安全軟件(如防病毒軟件或網絡安全套裝)可能會混淆瀏覽器傳輸請求的方式。

編輯

編輯後,請嘗試以下操作:

$currentcookie = unserialize($this->Cookie->read('mixes')); 

$this->Cookie->write('mixes', serialize(array('idofthemix' => $newTempMixId))); 
+0

如果我在頁面上右鍵單擊並檢查Chrome上的元素,我可以訪問資源並看到實際上我希望存在的cookie不存在。然而,CAKEPHP中的一個在那裏,所以瀏覽器必須接受它。爲什麼它不適用於我的自定義Cookie? – 2013-03-07 00:37:02

+0

@crazysarah我能想到的最後一件事就是你應該確保在發送完標題之前發送cookie,並且在發送任何其他輸出之前,嘗試在任何輸出已經發送之後設置cookie將會失敗,成爲一些餅乾罰款的原因,一些沒有設置。 – sharp12345 2013-03-07 00:50:50

+0

@crazysarah在您編輯後更新了我的答案。 – sharp12345 2013-03-07 01:10:11

相關問題