Cookie

Cookie позволяют хранить приложению информацию на стороне клиента на долгое время, обычно это предпочитаемый язык, либо выбранная страна, либо еще какие-нибудь настройки. Kohana предоставляет класс для работы с подписанными Cookie (signed cookie) — это значит, что все cookie хранятся вместе с «подписью», которая предотвращает их от изменения самим клиентом.

Однако, вы по прежнему можете использовать суперглобальный массив $_COOKIE и устанавливать обычные cookie, но это делает их несовместимыми с классом Kohana, и если вы обратитесь к обычному cookie через этот класс, то данный cookie будет удален.

Конфигурация

Конфигурация cookie происходит в файле bootstrap.php до инициализации приложения (Kohana::init), для настройки доступны следующие переменные:

  • Cookie::$salt. Хеш, с помощью которого будут генерироваться подписи для cookie.

    Cookie::$salt = 'some unique hash like m,*{:~)tk_';
  • Cookie::$expiration (необязательный параметр). Время жизни cookie (в секундах).

    Cookie::$expiration = Date::WEEK; // Время жизни cookie — неделя
  • Cookie::$path (необязательный параметр). Путь, в пределах которого доступны cookie, по умолчанию — /.

    Cookie::$path = '/admin/'; // Cookie будут доступны только для папки /admin/
  • Cookie::$domain (необязательный параметр). Домен, в пределах которого действует cookie.

    Cookie::$domain = '.kohana3.ru'; // Сделать cookie доступными для kohana3.ru и всех его поддоменов
  • Cookie::$secure (необязательный параметр). Сделать cookie доступными только через защищенное соединение (HTTPS).

    Cookie::$secure = TRUE; // Cookie доступны только по https://
  • Cookie::$httponly (необязательный параметр). Сделать cookie доступными только через HTTP, делая их недоступными для JavaScript.

    Cookie::$httponly = TRUE; // Cookie недоступны для javascript

Пример конфигурации:

Cookie::$salt = 'P37igejy5w';
Cookie::$expiration = Date::MONTH * 3;
Cookie::$domain = '.kohana3.ru';

Все установленные с этой конфигурацией cookie будут доступны в течении 3х месяцев на любом поддомене kohana3.ru.
Если изменить хеш Cookie::$salt во время работающего приложения, то все cookie, установленные ранее с помощью его, перестанут работать.

Использование

Класс Cookie схож по применению с классом сессий, за той разницей, что работа с сессиями ведется через объект, а работа с cookie через статический класс.

Запись

Для записи cookie используется метод Cookie::set($key, $value, $expiration), где $key — ключ, $value — значение, а $expiration (опционально) — время жизни cookie. Если параметр $expiration не указан, то вместо него используется Cookie::$expiration. Пример использования:

Cookie::set('language', 'ru', Date::YEAR);

Получение

Для получения cookie используется метод Cookie::get($key, $default), где $key — имя cookie и $default — значение, возвращаемое если cookie не существует или поврежден.

$language = Cookie::get('language', 'en');

Удаление

Чтобы удалить cookie, используйте метод Cookie::delete($name), где $name — имя cookie.

Cookie::delete('language');

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *