2012-01-30 5 views
0

Я пытаюсь установить куки, если null, но я не могу заставить его работать:Невозможно установить печенье внутри конструкции в CodeIgniter

public function __construct() 
{ 
    parent::__construct(); 
    if ($this->input->cookie('ff', TRUE) == FALSE) 
    { 
     $this->input->set_cookie('ff', 'on', 86500); 
     dump($this->input->cookie('ff', TRUE)); 
    } 
} 

Что я делаю неправильно?

Редактировать: dump() это обычная функция отладки.

+0

Что делает 'dump()' do? Куки-файлы должны быть установлены до того, как что-либо еще отправлено в браузер, как они есть в заголовках ответов. http://php.net/manual/en/function.setcookie.php – Treffynnon

+0

Дамп - это настраиваемая функция отладки. Тогда как я могу правильно установить в codeigniter cookie, если он пуст? – Alex

+0

Вы можете использовать несколько способов для отладки, не влияя на возможность установки заголовков. Вы можете использовать Firebug с FirePHP, высылать по электронной почте результат с помощью 'mail()' или записывать в файл журнала или использовать буферизацию вывода PHP. Кроме того, в этом случае вы можете просто поместить свой вызов в 'dump()' после того, как вы установили файл cookie. – Treffynnon

ответ

2

Несколько причин ваш set_cookie вызов может потерпеть неудачу:

1) Вы имеете что-то выход в браузер уже когда set_cookie называется, в этом случае вы можете получить сообщение об ошибке/уведомление по линии «Заголовки уже отправлено". Чтобы исправить это, просто убедитесь, что вызов set_cookie происходит перед отправкой чего-либо в браузер.

2) Если вы выполняете локальную разработку и тестирование, «localhost» не считается допустимым доменом, поэтому для него не будут сохранены файлы cookie. Обойти можно было бы добавить запись в файл хостов, например:

localhost.dev 127.0.0.1 

И тогда тест с этим доменом, вместо «локальный».