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

  Александр Маврин   Комментариев нет

PHP Cookie

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

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

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

setcookie('name', 'value');

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

1NameНазвание (имя) cookie
2ValueЗначение (как правило переменная)
3ExpiresВремя жизни куки
4PathПуть для которого будут сохранены куки
5DomainМожно указать поддомен (‘.domain.ru’)
6SecureИспользование только на HTTPS (true или false)
7HttpOnlyИспользование только на 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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
$name = $_POST['name'];
if (isset($_POST['submit'])) {
  setcookie('name, $name);
  header('Location: ' .$_SERVER["HTTP_REFERER"]);
}
$name_c = $_COOKIE['name'];
$val_1 = $_POST['val1'];
$val_2 = $_POST['val2'];
if(isset($_POST['submin_two'])){
  setcookie('val1, $val_1);
  setcookie('$val_2, $val_2);
}
$val1_c = $_COOKIE['val1'];
$val2_c = $_COOKIE['val2'];
if(isset($_COOKIE['name'])){
  $head = '<div class="block-cookie"><b>Привет, '.$name_c. '!</b></div>';
  $form = '
<form action="" method="post">
  <div class="form-group">
    <small>* Заполните поля и нажмите кнопку отправить</small>
    <input type="text" name="val1" class="form-control" placeholder="Имя" value="'. $val1_c.'""/>
  </div>
  <div class="form-group">
    <input type="text" name="val2"  class="form-control"placeholder="Сообщение" value="'.$val2_c.'" />
  </div>
  <div class="form-group">
    <input type="submit" name="submit" value="Отправить" class="btn btn-primary"/>
    <small>* Потом пробуйте обновить страницу</small>
  </div>
</form>';
}else{
  $head_two = '
<div class="block-cookie2">Введите свое имя, чтобы продолжить.</div>
<p>Этот абзац пропадет после того, как вы введете имя и отправите данные, нажав на кнопку.</p>';
$form2 = '
<form action="" method="post">
  <div class="form-group">
    <input type="text" name="name" class="form-control" placeholder="Введите имя"/>
  </div>
  <input type="submit" name="submit_two" class="btn btn-success"/>
</form>';
}

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

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>

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

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

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

Потом просто выводим на странице переменную 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, то напишите об этом в комментариях, будем разбираться вместе. Так же можете скачать пример из этой статьи и попрактиковаться самостоятельно.

СКАЧАТЬ

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

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

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