Cakephp: проблема с чтением cookie - PullRequest
6 голосов
/ 08 декабря 2010

Я использую плагин cookie jQuery, чтобы установить cookie с именем 'orderStatus' со значением 'success'.Это работает найти, и я проверил, и cookie установлен правильно и присутствует.Однако, когда я прихожу, чтобы прочитать cookie в моем контроллере, вот так:

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

и затем выводит содержимое $ status, оно пустоеКто-нибудь знает, что я делаю не так?Я настроил торт для использования компонента cookie, так что это не проблема.Спасибо

Ответы [ 5 ]

13 голосов
/ 19 февраля 2012

Ответ, к сожалению, вы не можете прочитать cookie, который был написан любым другим методом с использованием cakephp. Компонент Cookie в торте не был написан с учетом возможности взаимодействия. Метод read может читать только файлы cookie, которые были записаны методами компонента cookie cookie.

Чтобы прочитать cookie, установленный javascript в вашем контроллере, вам нужно получить доступ к переменной $ _COOKIE, встроенной в PHP.

6 голосов
/ 03 сентября 2012

Это будет работать, если вы используете то же пространство имен для вашего куки, сохраненного в JavaScript, которое используется Cake Cookie Component по умолчанию.Пространство имен 'CakeCookie'

Таким образом, ваш файл cookie должен выглядеть примерно так:

CakeCookie[your_cookie_name]
1 голос
/ 08 декабря 2010

Вы можете установить другие значения cookie? Что выводится из следующего кода?

<?php
 function testcookie() {
  $this->Cookie->write( 'test', 'somevalue' );
  echo $this->Cookie->read( 'test' );
 }
?>
0 голосов
/ 02 декабря 2013

Вы можете прочитать jQuery Cookies из CakePhp, единственная проблема в том, что они не могут быть зашифрованы .

Если вы используете, например, 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') 
0 голосов
/ 08 декабря 2010

Прежде всего, это может представлять большой риск для вашего приложения.Помните, что cookie - это данные, которые пользователь может изменить самостоятельно.Так что, если это проверка, может быть ошибка.

Теперь я не знаю, устанавливаете ли вы cookie, но способ установки cookie в CakePHP - через синтаксис Model.field:

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

Попробуйте установить cookie выше того же контроллера, теперь попробуйте прочитать его, а затем начните возвращать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...