我正在使用jQuery cookie插件来设置一个cookie,名为'orderStatus',值为'success'。这是工作查找,我已经检查,cookie设置正确并存在。然而,当我来读我的控制器饼干,像这样:Cakephp:读取cookie问题
$status = $this->Cookie->read('orderStatus');
,然后呼应$ status的内容为空。任何人都知道我在做什么错了?我已经设置了使用cookie组件的蛋糕,所以这不是问题。谢谢
我正在使用jQuery cookie插件来设置一个cookie,名为'orderStatus',值为'success'。这是工作查找,我已经检查,cookie设置正确并存在。然而,当我来读我的控制器饼干,像这样:Cakephp:读取cookie问题
$status = $this->Cookie->read('orderStatus');
,然后呼应$ status的内容为空。任何人都知道我在做什么错了?我已经设置了使用cookie组件的蛋糕,所以这不是问题。谢谢
答案很遗憾,您无法阅读使用cakephp通过任何其他方法编写的cookie。 Cake中的Cookie组件并没有考虑到互操作性。 read方法只能读取由cookie cookie组件方法写入的cookie。
为了读取您的控制器中由javascript设置的cookie,您必须访问PHP原生的$ _COOKIE变量。
首先,这可能会对您的应用程序造成很大的风险。请记住,Cookie是用户可以自行修改的数据。所以如果这是验证,可能会有错误。现在
,我不知道您是否设置cookie,而是设置在CakePHP中饼干的方法是通过Model.field
语法:
$this->Cookie->read('Order.status');
尝试设置相同的控制器上面一个cookie,现在尝试阅读并开始回溯。
你是对的,在某些情况下,它可能有严重的安全问题,但在我的情况下,我用它来显示欧盟饼干政策,所以我不在乎是否有人会删除该cookie,他们将不得不再次看到警告。 – 2014-07-17 12:30:37
你能够设置其他cookie值吗?以下代码的输出是什么?
<?php
function testcookie() {
$this->Cookie->write('test', 'somevalue');
echo $this->Cookie->read('test');
}
?>
如果您使用相同的命名空间作为由Cookie保存的Cookie,并且Cookie Cookie组件使用该命名空间作为默认名称空间。命名空间是“CakeCookie”
所以你的cookie必须像:
CakeCookie[your_cookie_name]
你可以阅读从CakePHP的jQuery的饼干,唯一的问题是,他们不能被加密。
如果您使用的是例如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')
如果使用CakePHP 3将返回true(CakePHP的> 2.2)和
$this->Cookie->read('cookie_name')
将返回 '喂'
。 x应该是这样的:
$this->Cookie->read('CakeCookie.cookie_name')
这是可能的 - 检查我的答案在下面。 – kriskodzi 2015-05-13 09:48:30