Не могу получить Cookie - PullRequest
       2

Не могу получить Cookie

0 голосов
/ 23 декабря 2011

До сих пор я всегда работал с сессией в Codeigniter. Но теперь есть много данных для сеанса. Мне нравится использовать куки, но у меня это не работает.

  • Сначала я загружаю помощник cookie в автозагрузку.
  • Я использую этот код для добавления данных $this->input->set_cookie('users_new',$users_new);
  • var_dump($this->input->cookie('users_new')); С этим я пытался получить данные. Но это пусто. Переменная $users_new заполнена массивом, поэтому она не может быть пустой.

Когда я пробую этот простой пример, cookie-файл также пуст.

$cookie = array(
'name'   => 'some_value',
'value'  => 'The Value'
);
set_cookie($cookie);
var_dump(get_cookie('some_value'));
die();

Что не так?

Спасибо за вашу помощь !!

Ответы [ 3 ]

1 голос
/ 23 декабря 2011

Файлы cookie отправляются браузером, поэтому вам придется подождать, пока пользователь перезагрузит страницу.

Итак, основной процесс таков:

  1. вы устанавливаете cookie
  2. пользователь отправляет cookie по следующему запросу
  3. вы можете получить доступ кзначение cookie, используя get_cookie

РЕДАКТИРОВАТЬ:

setcookie используется таким образом, он не будет работать с массивом

setcookie("TestCookie", $value);
setcookie("TestCookie", $value, time()+3600);  /* expire dans 1 heure */
setcookie("TestCookie", $value, time()+3600, "/~rasmus/", "example.com", 1);

, поэтому вы должны сделать:

foreach ($cookie as $key => $val) {
   setcookie($key, $val);
}
0 голосов
/ 02 июля 2013

Cookies не могут содержать массивы, просто текст. У @RageZ была хорошая подсказка с циклом for, который установил бы много куки (столько же, сколько vars в массиве). @Damien предлагает «сериализовать», а другой вариант - поместить массив в str с нативной функцией php «json_encode ()»

0 голосов
/ 23 декабря 2011
  1. Вы должны установить значение срока действия, т.е. секунды с момента его создания до момента его истечения.
  2. значение "name" должно быть строкой, а не массивом.Если вам нужно несколько информационных данных, вы можете просто serialize () массив.

Пример кода:

$cookie = array(
    'name'   => 'users_new',
    'value'  => serialize($users_new),
    'expire' => '86500'
);

$this->input->set_cookie($cookie);

Вы не можетене нужно загружать помощник cookie, если вы просто используете класс ввода.Нет проблем, я знаю, просто чтобы избежать бесполезных строк кода:)

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