【问题标题】:Cakephp: Reading cookie problemCakephp:读取cookie问题
【发布时间】:2016-05-13 23:37:49
【问题描述】:

我正在使用 jQuery cookie 插件来设置一个名为 'orderStatus' 的 cookie,其值为 'success'。这是有效的查找,我已检查并且 cookie 设置正确且存在。但是,当我像这样读取控制器中的 cookie 时:

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

然后回显 $status 的内容为空。有人知道我在做什么错吗?我已经将 cake 设置为使用 cookie 组件,所以这不是问题。谢谢

【问题讨论】:

    标签: jquery cakephp cookies


    【解决方案1】:

    很遗憾,答案是,您无法读取使用 cakephp 的任何其他方法写入的 cookie。 cake 中的 Cookie 组件在编写时并未考虑到互操作性。 read 方法只能读取由 cake cookie 组件方法写入的 cookie。

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

    【讨论】:

    • 有可能 - 请在下面查看我的答案。
    【解决方案2】:

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

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

    CakeCookie[your_cookie_name]
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        首先,这可能会给您的应用程序带来很大风险。请记住,cookie 是用户可以自行修改的数据。因此,如果这是验证,则可能会出现错误。

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

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

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

        【讨论】:

        • 你是对的,在某些情况下它可能存在严重的安全问题,但即在我的情况下,我用它来显示欧盟 cookie 政策,所以我不在乎是否有人会删除该 cookie 和他们将不得不再次看到警告。
        【解决方案5】:

        您可以从 CakePhp 读取 jQuery Cookie,唯一的问题是它们无法加密。

        如果您使用例如 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 > 2.2) 和

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

        将返回“你好”

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

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

        【讨论】:

          猜你喜欢
          • 2011-10-03
          • 2011-12-19
          • 2011-08-05
          • 2013-12-07
          • 2013-11-30
          • 2015-01-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多