Cakephp:读取cookie问题

时间:2010-12-08 14:26:26

标签: jquery cakephp cookies

我正在使用jQuery cookie插件设置一个名为'orderStatus'的cookie,其值为'success'。这是工作查找,我已经检查,cookie已正确设置并存在。但是当我在控制器中读取cookie时如此:

$status = $this->Cookie->read('orderStatus');

然后回显$ status的内容为空。谁知道我做错了什么?我设置蛋糕使用cookie组件,这不是问题。感谢

5 个答案:

答案 0 :(得分:13)

遗憾的是,您无法读取使用cakephp通过任何其他方法编写的cookie。蛋糕中的Cookie组件并未考虑互操作性。 read方法只能读取由cake cookie组件方法编写的cookie。

为了在您的控制器中读取由javascript设置的cookie,您必须访问PHP原生的$ _COOKIE变量。

答案 1 :(得分:6)

如果您为Cake Cookie组件使用的JavaScript保存的cookie使用相同的命名空间,则它将起作用。命名空间是'CakeCookie'

所以你的cookie必须看起来像:

CakeCookie[your_cookie_name]

答案 2 :(得分:1)

您是否可以设置其他Cookie值?以下代码的输出是什么?

<?php
 function testcookie() {
  $this->Cookie->write( 'test', 'somevalue' );
  echo $this->Cookie->read( 'test' );
 }
?>

答案 3 :(得分:0)

首先,这可能对您的应用程序造成很大风险。请记住,Cookie是用户可以自行修改的数据。因此,如果这是验证,则可能存在错误。

现在,我不知道你是否在设置cookie,但是在CakePHP中设置cookie的方法是通过Model.field语法:

$this->Cookie->read('Order.status');

尝试在同一个控制器上方设置一个cookie,现在尝试阅读它,然后开始回溯它。

答案 4 :(得分:0)

你可以从CakePhp阅读jQuery Cookies,唯一的问题是他们无法加密

如果您使用的是例如jCookie(https://github.com/carhartl/jquery-cookie),则下面的代码将适用于您,将myCompany替换为配置文件中的Cookie名称。

$.cookie.raw = true;
$.cookie('myCompany[cookie_name]', 'hallo', { expires: 365, path: '/'});

然后,在你的控制器中:

$this->Cookie->check('cookie_name') 

将返回true(cakephp&gt; 2.2)和

$this->Cookie->read('cookie_name') 

将返回'hallo'

如果使用cakephp 3.x,这应该是:

$this->Cookie->read('CakeCookie.cookie_name')