Документация/Контейнер/Сервисы/Cookies

Cookies

Для обработки HTTP cookies во фреймворке HLEB2 предназначен сервис Cookies.

Способы использования Cookies в контроллерах (и всех классах, унаследованных от Hleb\Base\Container) на примере получения значения из cookies:

// variant 1
use Hleb\Reference\CookieInterface;
$value $this->container->get(CookieInterface::class)->get('cookie_name');

// variant 2
$value $this->container->cookies()->get('cookie_name');

// variant 3
$value $this->cookies()->get('cookie_name');

Пример обращения к cookies в коде приложения:

// variant 1
use Hleb\Static\Container;
use 
Hleb\Reference\CookieInterface;
$value Container::get(CookieInterface::class)->get('cookie_name');

// variant 2
use Hleb\Static\Cookies;
$value Cookies::get('cookie_name');

Также объект Cookies может быть получен через внедрение зависимостей по интерфейсу Hleb\Reference\Interface\Cookie.

Для упрощения примеров, далее они будут содержать только обращение через Hleb\Static\Cookies.


#get()

Метод get() возвращает cookie по названию в виде объекта. При помощи этого объекта можно получить как необработанные данные, так и преобразованные в нужном формате. Преобразование тегов HTML производится фреймворком и необходимо в том случае, если данные после получения будут выведены на странице, что может создать cookie-based XSS уязвимость.
В примере показаны различные варианты получения значения cookie:

use Hleb\Static\Cookies;

// (!) Original raw data.
$rawValue Cookies::get('cookie_name')->value();

// Validated data converted to string.
$clearedStringValue Cookies::get('cookie_name')->asString();

// Data converted to an integer.
$integerValue Cookies::get('cookie_name')->asInt();

// Data checked for a positive integer.
$positiveIntegerValue Cookies::get('cookie_name')->asPositiveInt();

#all()

Метод all() возвращает именованный массив объектов, аналогичных полученному в методе get(), из которых можно получить значения всех или конкретных сookies.

Наиболее частой ошибкой при использовании объекта, возвращаемого этими методами, может быть использование этого объекта как значения, вместо получения значения из объекта.


#set()

Для установки или изменения cookie по названию предназначен метод set(). Первым аргументом передаётся название cookie, вторым - значение, которое будет присвоено. Третьим аргументом 'options' ожидается массив дополнительных параметров, аналогично использованию PHP функции setcookie(), в котором можно установить опции 'expires', 'path', 'domain', 'secure', 'httponly' и 'samesite'.

use Hleb\Static\Cookies;

$options = [
    
'expires' => time() + 60 60 24 30,
    
'path' => '/',
    
'domain' => '.example.com'// leading dot for compatibility or use subdomain
    
'secure' => true,     // or false
    
'httponly' => true,    // or false
    
'samesite' => 'None' // None / Lax / Strict
];
Cookies::set('cookie_name''value'$options);

#delete()

При помощи метода delete() удаляется cookie по названию.


#clear()

Метод clear() позволяет очистить все cookies.


#Асинхронный режим

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

Сессии Redirect

Страница создана: @fomiash
К началу страницы