cakephp 2 cookie不能与Chrome或IE一起使用

时间:2013-03-07 00:22:08

标签: php internet-explorer google-chrome cakephp

我有一个奇怪的问题,似乎只发生在chrome中。基本上我设置一个cookie来记住一个id,这样我就可以在访问我的网站时向我的用户提供正确的信息。

在我的控制器操作中:

$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。我没有关闭浏览器或任何东西。我错过了什么?

新---这是我正在阅读和编写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%$^%$fsgatfjmi@#@##@@:LLLkjljkjlj87^*&^*6768!£"&^*()%$&';
    $this->Cookie->httpOnly = true;

因此它在大多数浏览器中显示为tempmix [mixes],其值为Q2FrZQ%3D%3D.b8LRe4GareCnq54%3D。只是不在Chrome或IE中

1 个答案:

答案 0 :(得分:1)

检查您的浏览器设置,有时浏览器设置为不允许任何Cookie。

另外,尝试手动转到每个浏览器中的cookie列表,看看您的站点cookie是否存在。 (每个浏览器都有不同的访问cookie的方式)

值得注意的是,某些安全软件(如防病毒软件或互联网安全套装)可能会破坏浏览器传输请求的方式。

修改

编辑后,请尝试以下操作:

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

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