2013-03-07 3 views
1

У меня есть странная проблема, которая, похоже, происходит только в хроме. В основном я устанавливаю cookie для запоминания идентификатора, поэтому я могу представить своим пользователям правильную информацию, когда они посещают мой сайт.cakephp 2 cookie не работает только с Chrome или IE

В моем действии контроллера:

$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 == «») должен вычисляться истинен и новый куки должен быть создан. Если уже есть файл cookie 'else', он запускается.

Я выводил идентификатор в представлении, поэтому я знаю, если он только что созданный, который должен быть при первом посещении, но должен оставаться неизменным при последующих посещениях.

Это работает на FF Opera и сафари, но странно не с хромом или IE. Я не закрываю браузер или что-то еще. Что мне не хватает?

NEW --- Вот как я читаю и пишу печенье:

$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%$^%[email protected]#@##@@:LLLkjljkjlj87^*&^*6768!£"&^*()%$&'; 
    $this->Cookie->httpOnly = true; 

Так он показывает в большинство браузеров, таких как tempmix [mixes] со значением Q2FrZQ% 3D% 3D.b8LRe4GareCnq54% 3D. просто не в Chrome или IE

+0

Возможно ли, что название «идентификатор» конфликтует с некоторыми другими печенье быть установлен в проблемных браузерах? это что-то изменит, если вы используете действительно уникальный идентификатор типа «jgfchgmf655-id»? – Stuart

+0

Нет, к сожалению, –

+0

@crazysarah Как вы _writing_ the cookie –

ответ

1

Проверьте настройки своего браузера, иногда в браузере установлен запрет куки-файлов.

также попробуйте вручную перейти к списку файлов cookie в каждом браузере и посмотреть, существует ли ваш файл cookie вашего сайта или нет. (у каждого браузера будет другой способ доступа к куки-файлам)

Возможно, стоит отметить, что некоторые программные средства безопасности, такие как антивирусы или интернет-костюмы для безопасности, могут испортить способ передачи запроса браузером.

EDIT

После редактирования, попробуйте следующее:

$currentcookie = unserialize($this->Cookie->read('mixes')); 

$this->Cookie->write('mixes', serialize(array('idofthemix' => $newTempMixId))); 
+0

Если я нажимаю правой кнопкой мыши и проверяю элемент на хроме, находясь на моей странице, я могу перейти к ресурсам и посмотреть, что на самом деле cookie, которого я ожидал, там нет. Тем не менее, существует один из CAKEPHP, поэтому браузер должен его принять. Почему бы не работать для моего cookie-файла? –

+0

@crazysarah Последнее, что я могу придумать, это то, что вы должны убедиться, что файлы cookie отправлены до того, как заголовки закончены, и до того, как будет отправлен любой другой вывод, попытка установить файл cookie после того, как любой вывод уже отправлен, не удастся, это будет быть причиной того, что некоторые файлы cookie будут в порядке, а некоторые не будут установлены. – sharp12345

+0

@crazysarah обновил мой ответ после вашего редактирования. – sharp12345

Смежные вопросы