我有一个奇怪的问题,似乎只发生在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中
答案 0 :(得分:1)
检查您的浏览器设置,有时浏览器设置为不允许任何Cookie。
另外,尝试手动转到每个浏览器中的cookie列表,看看您的站点cookie是否存在。 (每个浏览器都有不同的访问cookie的方式)
值得注意的是,某些安全软件(如防病毒软件或互联网安全套装)可能会破坏浏览器传输请求的方式。
修改强>
编辑后,请尝试以下操作:
$currentcookie = unserialize($this->Cookie->read('mixes'));
$this->Cookie->write('mixes', serialize(array('idofthemix' => $newTempMixId)));