1

我有一个奇怪的问题,似乎只发生在 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
}

因此,如果这是某人第一次访问 if ($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 中

4

1 回答 1

1

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

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

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

编辑

编辑后,尝试以下操作:

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

$this->Cookie->write('mixes', serialize(array('idofthemix' => $newTempMixId))); 
于 2013-03-07T00:27:20.720 回答