РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
508 of 1361 menu

Класс Cookie

Класс Cookie из пространства имён Symfony\Component\HttpFoundation\Cookie представляет собой HTTP-cookie. Объект этого класса хранит имя, значение и все атрибуты cookie: срок жизни, путь, домен, флаг secure, флаг httpOnly, политику sameSite и флаг partitioned. Первым параметром конструктора передаётся имя cookie, вторым - значение. Далее можно передать срок жизни, путь и домен. Класс неизменяемый: каждый метод with... возвращает новый объект cookie с изменённым параметром, а исходный объект остаётся прежним.

Синтаксис

<?php use Symfony\Component\HttpFoundation\Cookie; $cookie = new Cookie( string $name, string $value = null, int $expire = 0, string $path = '/', string $domain = null, bool $secure = null, bool $httpOnly = true, bool $raw = false, string $sameSite = 'lax', bool $partitioned = false ); ?>

Пример

Давайте создадим простое cookie с именем 'user' и значением 'abcde' и вернём его в ответе:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Cookie; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class CookieController extends AbstractController { #[Route('/cookie', name: 'cookie_index')] public function index(): Response { $cookie = new Cookie('user', 'abcde'); $response = new Response('cookie created'); $response->headers->setCookie($cookie); return $response; } } ?>

Результат выполнения кода:

"cookie created"

Пример

Давайте прочитаем значение cookie из запроса:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class CookieController extends AbstractController { #[Route('/cookie/read', name: 'cookie_read')] public function read(Request $request): Response { $value = $request->cookies->get('user', 'default'); return new Response($value); } } ?>

Результат выполнения кода, если cookie user равно 'abcde':

"abcde"

Пример

Давайте создадим cookie с настройками через методы withValue, withExpires, withPath, withSecure, withHttpOnly и withSameSite:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Cookie; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class CookieController extends AbstractController { #[Route('/cookie/config', name: 'cookie_config')] public function config(): Response { $cookie = (new Cookie('user')) ->withValue('abcde') ->withExpires(time() + 3600) ->withPath('/') ->withSecure(true) ->withHttpOnly(true) ->withSameSite(Cookie::SAMESITE_STRICT); $response = new Response('cookie configured'); $response->headers->setCookie($cookie); return $response; } } ?>

Результат выполнения кода:

"cookie configured"

Пример

Давайте создадим cookie с доменом и флагом partitioned:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Cookie; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class CookieController extends AbstractController { #[Route('/cookie/domain', name: 'cookie_domain')] public function domain(): Response { $cookie = (new Cookie('user', 'abcde')) ->withDomain('example.com') ->withPartitioned(true); $response = new Response('cookie with domain'); $response->headers->setCookie($cookie); return $response; } } ?>

Результат выполнения кода:

"cookie with domain"

Смотрите также

  • метод create,
    который создаёт объект cookie
  • метод withValue,
    который задаёт значение cookie
  • метод withExpires,
    который задаёт срок жизни cookie
  • метод withSameSite,
    который задаёт политику SameSite
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить