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