PHP Cookie — практические примеры использования

    Один комментарий 974

PHP Cookie

Привет, друзья. Пришло время поговорить о том, что такое PHP cookie, как их установить, удалить, перезаписать и где они используются. Этот урок для начинающих и полных чайников в программировании, поэтому буду показывать на конкретных практических примерах. Итак, что же такое куки в PHP? Это один из способов хранения определенных данных на стороне клиента. Если говорить проще, то куки хранятся в браузере пользователя. Например при авторизации. Когда юзер отправляет данные, они сохраняются на устройстве. Теперь давайте ближе к делу или сразу к видео

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

Все не так сложно, как может показаться. Установка cookie происходит следующим образом:

setcookie('name', 'value');

Это базовые значения, которые обязательны для заполнения. Но параметров гораздо больше, а именно 7! Семь, Карл! И вот для чего каждый из них нужен.

1 Name Название (имя) cookie
2 Value Значение (как правило переменная)
3 Expires Время жизни куки
4 Path Путь для которого будут сохранены куки
5 Domain Можно указать поддомен (‘.domain.ru’)
6 Secure Использование только на HTTPS (true или false)
7 HttpOnly Использование только на HTTP (true или false)

В подавляющем большинстве случаев используются первые 3 параметра чтобы записать cookie в PHP. То есть имя, значение и время жизни. Этого вполне достаточно для полноценной работы. Давайте к практике.

setcookie('name', 5, time()+60)

Здесь я установил cookie name со значением — 5, которая удалится через 1 минуту.

Как получить, прочитать, проверить cookie в PHP

В этом нам поможет глобальный массив COOKIE. Чтобы получить значение куки нам нужно вызвать ее по имени.

echo $_COOKIE['name'];

Как вы уже догадались, на экран выведется пятерка. Теперь сделаем проверку. Если данная кука была установлена, то выедем одно сообщение, если не была, то другое.

if(isset($_COOKIE['name'])){
  echo 'Куки успешно установлены!';
}else{
  echo 'Куки НЕ установлены!';
}

Есть один маленький нюанс. При первом заходе на страницу будет выведено сообщение, что куки не установлены, однако, если заглянуть в консоль браузера, то увидим, что она там есть. В чем же дело? Элементарно. Дело в том, что запрос на проверку и сама установка куки идут ОДНОВРЕМЕННО. Поэтому сообщение об успешной установке мы увидим только после следующей перезагрузке страницы.

Теперь у нас есть условие и его можно использовать в некоторых случаях.

Авторизация с использованием PHP Cookie

Для примера я создам 2 формы. Первая с одним единственным полем, в которое будем писать свое имя. Пока не будет введено и отправлено имя, пользователю будут недоступны некоторые элементы страницы. То есть, если он не авторизован, то какие-то функции сайта от него будут скрыты, а так же показано приветствие. После того, как данные с формы будут отправлены, эта форма будет скрыта и показана другая, которая просто будет запоминать все данные, введенные пользователем.

Пример cookie в PHP
Код PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<div class="container">
  <div class="row">
    <div class="col-md-12">
      < ?=$head ?>
      < ?=$head_two ?>
    </div>
  </div>	
  <div class="row">
    <div class="col-md-12">
      <div class="col"> < ?=$val1_c ?></div>
      <div class="col">< ?=$val1_c ?></div>
    </div>
  </div>
  <div class="row">
    <div class="col-md-4 col-sm-12">
      < ?=$form?>
      < ?=$form2?>
    </div>
  </div>
</div>

Теперь осталось в HTML вставить нужные переменные.

1
2
3
4
5
6
$count = 0;
if (isset($_COOKIE['count'])) {
  $count = $_COOKIE['count'];
  $count++;
}
setcookie('count', $count);

Счетчик просмотров страницы на PHP + cookie

недавно я публиковал материал на тему создания счетчика просмотров страниц. Но там он считает общее количество просмотров всеми посетителями. Здесь же мы сделаем некую индивидуальность и покажем сколько раз каждый их юзеров был на этой странице. Благо делается он очень просто. Вот его код:

1
2
setcookie('name', '');
setcookie('name', '$value', time()-86400);

Потом просто выводим на странице переменную count. Протестировать и посмотреть пример работы PHP cookie можно на этой странице:

Демо
Работа с куки в PHP

Время жизни cookie в PHP

Если не указан третий параметр (Expires), то куки будут храниться до окончания сессии, то есть пока вы не закроете браузер. Но можно выставить и другие временные рамки, к примеру на 1 час или на 1 день и т. д. Вот некоторые примеры:

  • time()+3600 — один час
  • time()+86400 — один день
  • time()+86400 * 30 — 30 дней
  • time()+86400 * 30 * 12 — 1 год

Этого вполне достаточно, но многие интересуются, как сделать так, чтобы куки жили вечно или сделать время жизни бесконечным. Не очень понимаю в каких случаях это может понадобиться, однако ответ на этот вопрос будет — НЕТ, нельзя. Но можно поставить максимальное время. Пишется так: 0x7FFFFFFF — дата 19.01.2038 года.

Как удалить или очистить (unset) куки в PHP

Удаление куки в PHP можно сделать двумя способами. Оставить значение пустым или установить прошедшую дату, со знаком минус:

1
2
setcookie('name', '');
setcookie('name', '$value', time()-86400);

Надеюсь это руководство было максимально понятным и исчерпывающим. Если вам есть что добавить по этой теме или у вас не работают cookie в PHP, то напишите об этом в комментариях, будем разбираться вместе. Так же можете скачать пример из этой статьи и попрактиковаться самостоятельно.

СКАЧАТЬ

Добавить страницу в закладки

1 комментарий
  1. Евгений:

    каким образом можно например удалить куки при разлогинивании на сайте? Ведь уже были выведены данные, в частности та же форма авторизации и при использовании setCookie() будет ошибка Cannot modify header information — headers already sent by…

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

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