PHP: Разработка микрофреймворка

Теория: Куки

Куки в PHP

Куки позволяют хранить небольшие данные на стороне браузера и отправлять их обратно в каждом подходящем запросе.

В PHP работа с куки строится вокруг двух вещей:

  • Чтение через $_COOKIE.
  • Установка через setcookie().

Чтение куки

Текущие куки запроса доступны в суперглобальном массиве $_COOKIE.

<?php

return response(render('index', ['cookies' => print_r($_COOKIE, true)]));

Обычно это простой набор пар ключ-значение.

Установка куки

Для установки используется функция setcookie(). Она позволяет задать не только имя и значение, но и дополнительные ограничения.

Пример из теории:

<?php

setcookie('session-cookie', uniqid());
setcookie('persistent-cookie', uniqid(), time() + 10000);
setcookie('session-cookie-with-path', uniqid(), 0, '/about');
setcookie('session-cookie-for-domain', uniqid(), 0, '', 'www.localhost');
setcookie('session-cookie-with-httponly', uniqid(), 0, '', '', false, true);

В этом примере сразу несколько вариантов: сессионная кука, постоянная кука и куки с дополнительными параметрами path, domain и HttpOnly.

Сессионные и постоянные куки

Есть два основных типа:

  • Сессионные куки.
  • Постоянные куки.

Сессионная кука создается без времени истечения и живет до закрытия браузера.

Постоянная кука создается с expires и хранится дольше:

<?php

setcookie('persistent-cookie', uniqid(), time() + 10000);

В примере кука будет жить 10000 секунд.

Параметры path и domain

Куки отправляются не всегда, а только когда совпадают условия области видимости.

Главные параметры:

  • path.
  • domain.

Если кука установлена с path=/about, она не придет на маршрут /.

Если кука установлена для другого домена, она тоже не попадет в текущий запрос.

Из-за этого часть установленных куки может не отображаться на конкретной странице.

Параметры HttpOnly и Secure

При установке можно включать дополнительные флаги:

  • HttpOnly.
  • Secure.

HttpOnly запрещает доступ к куке из JavaScript.

Secure разрешает отправку куки только по HTTPS.

Оба флага полезны для повышения безопасности.

Как это выглядит в HTTP

При установке куки сервер отправляет заголовки Set-Cookie.

Обычно формат такой:

Set-Cookie: name=value; Path=/; HttpOnly

Если установить несколько куки, сервер вернет несколько заголовков Set-Cookie.

Важное замечание про REQUEST

В PHP есть $_REQUEST, где смешаны $_GET, $_POST и $_COOKIE.

В прикладном коде лучше не опираться на $_REQUEST.

Причины:

  • Трудно понять, откуда пришло значение.
  • Проще допустить ошибку в валидации.
  • Выше риск уязвимостей из-за смешивания источников.

Надежнее читать данные напрямую из нужного массива.

Итог

На базовом уровне для работы с куки достаточно помнить следующее:

  • Читать куки из $_COOKIE.
  • Устанавливать куки через setcookie().
  • Настраивать expires, path, domain, HttpOnly и Secure под задачу.

Рекомендуемые программы

Дальше

Завершено

0 / 11

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845