PHP Cookie что это и как с ними работать на примерах

PHP Cookie что это и как с ними работать на примерах

Взаимодействие сайта и браузера пользователя происходит разными способами, в том числе применяя PHP cookie. Взаимодействие нужно и даже необходимо для решения разных задач. Например, для того чтоб ваш логин и пароль сайт запомнил и вам не нужно было каждый раз вводить эти данные при посещении сайта. А также, для того чтоб интернет-магазин запомнил вашу корзину. Проще говоря, PHP cookie — это небольшие файлы в браузере который являются памятью, связанную с тем или иным сайтом. Время этой памяти можно регулировать, либо вовсе удалить ее, то есть, файл куков.

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

Установка cookie происходит с помощью небольшого кода, а именно функцией setcookie(). Основные параметры которые нужно передать этой функции — это ключ, значение и время жизни куки.

<?php
// Создаём cookie с именем "userName" и значением "IT Шаман"
setcookie("userName", "IT Шаман", time() + 3600); // срок жизни — 1 час
?>
  • Первое значение — ключ по которому будет идти поиск самой куки для ее чтения или удаления.
  • Второе значение — само содержимое куки. Логин, пароль, ID или любое другое.
  • Третье значение — время жизни куки, по истечению которого она будет удалена.

Таким образом мы создали куку на 1 час, где функция time() выдает текущее время и добавляем к нему еще 3600 миллисекунд (1 час).

Получить PHP куки

Для того чтоб получить, то есть, прочитать cookie используется глобальный массив $_COOKIE.

<?php
if (isset($_COOKIE["userName"])) {
    echo "Привет, " . $_COOKIE["userName"] . "!";
} else {
    echo "Привет, гость!";
}
?>

Таким образом мы изначально проводим проверку на наличие нужной нам cookie через функцию isset() заключенную в конструкцию if() {} else {}. Если нужная нам кука существует то мы выводим приветствие, если же нет то выводим приветствие гостю.

Удалить PHP куки

Удаляются cookie точно также просто как и создаются, разница лишь в том, что нужно указать время нужной куки прошедшим числом. То есть, к функции time() не добавить время а наоборот его уменьшить.

<?php
// Удаляем cookie с именем "userName" и значением "IT Шаман"
setcookie("userName", "IT Шаман", time() - 3600);
?>

При следующем обращении браузера к серверу, браузер удалить эту куку.

Безопасность PHP cookie

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

  • Не храните важные данные прямо в cookie? это касается паролей, токенов, различных ключей доступа и т.д.
  • Можно использовать secure и httponly для того чтоб cookie не были доступны через JavaScript и не передавались через HTTP.
<?php
setcookie("session_id", "12345", [
    'expires' => time() + 3600,
    'path' => '/',
    'secure' => true,
    'httponly' => true,
    'samesite' => 'Strict',
]);
?>

В данном примере мы передали третьим параметром массив, в котором указали несколько значений. Рассмотрим каждый из них:

  • expires — задает время хранения cookie.
  • path — задает URL на котором эта cookie будет работать. Если задать / то работать будет на всем сайта, если же задать /tags то работать будет начиная с этого раздела и далее.
  • secure и httponly — при указании этих атрибутов со значениями true, данные из cookie будут передаваться на сервер только в том случае, если у сайта установлен SSL и HTTPS.
  • samesite — принимает значения Strict, Lax и None.
    • Strict — данные cookie получит только тот сайт которому они принадлежат.
    • Lax — работает похоже на Strict но данные cookie будут отправляться даже при переходе с другого сайта.
    • None — снимает все ограничения на отправку cookie для межсайтовых обменов данными.

Ответы на несколько вопросов о куках

Чтоб отпали простые вопросы, если вдруг они появятся, сразу даем ответы:

  • Где находятся созданные cookie — они хранятся на стороне пользователя, локально на его устройстве, в папках браузера в виде файлов.
  • Можно ли сохранять массивы или объекты — да, но перед этим советую использовать переформатирование данных, например, с помощью json_encode().
  • В каком количестве cookie можно создать — в среднем около 50 куков можно создавать на один сайт размером каждой до 4kb.

Итог работы с cookie

При правильном профессиональном подходе, PHP cookie дает большие возможности для хранения данных. Например, в ней можно хранить как логин с паролем и реферальный ID партнера, так и настройки дизайна вашего сайта для каждого пользователя. Если у себя на сайте вы сделаете настройки для каждого пользователя по дизайну, например, изменить цвет фона и текста под себя, то в cookie можно занести код цвета. При каждом новом заходе ваш сайт будет менять свой цвет только для определенного пользователя который внес свои настройки в свой профиль, то есть, создал определенные cookie.

Похожие статьи
Комментарии