базовый курс

ГРУППА КУРСА

Куки

В прошлой теме были рассмотрены сессии. Куки - это такой же способ хранения данных, но эти данные хранятся не на сервере, а на компьютере пользователя. Каждый браузер имеет своё место на диске для хранения файлов куки. Поэтому доступ к данным куки имеет только тот браузер, которые эти данные записал. Для сохранения куки в PHP используется функция setcookie(), которая отправляет куки на компьютер пользователя.

setcookie (имя, значения, срок действия)

Параметры:

имя - имя параметра, который записывается в куки

значение - значение параметра, который записывается в куки.

срок действия - время в секундах, после которого данные становятся недействительны и программа их не использует. Необязательный параметр. Если не установлен, то данные становятся недействительны после закрытия браузера. Для указания срока действия обычно используют функцию time(), и прибавляют к результату её работы нужное количество секунд.

У функции также есть другие параметры, но они используются редко.

Скрипты берут даннные куки из суперглобального массива $_COOKIE. При запуске каждого скрипта данные отправляются клиентом на сервер и записываются в массив.

Создадим программу, которая будет записывать данные из куки в переменную, а затем записывать в куки то же значение. Смысл этого состоит в том, чтобы обновить срок действия куки.

+
1
2
<?php
header('Content-type: text/html; charset=utf-8');
3
4
5
$user = $_COOKIE['user'];
echo 'Пользователь '.$user;
setcookie('user', 'Viktor', time()+5);

Скрипт работает так: в переменную записывается значение из массива $_COOKIE. При первом запуске значения не будет, ведь в куки ещё ничего не было отправлено. При следующих запусках в массиве будет значение, но только если у данных не закончился срок действия. А если срок действия закончился, то массив снова будет пустой. В следующей строке данные куки обновляются и для них устанавливается срок действия: 5 секунд с момента записи.

Если между запусками скрипта пройдёт менее 5 секунд, то переменная будет содержать значение и оно выведется на экран. А если пройдёт больше 5 секунд, то срок действия куки закончится и данные в массив не будут записаны. Обратите внимание, 5 секунд должно пройти не с момента закрытия страницы, а с момента записи куки, то есть практически с запуска скрипта.

Чтобы правильно использовать куки, нужно учитывать некоторые особенности. Функция setcookie() должна выполняться до отправки каких-либо данных клиенту. Если попытаться запустить её после отправки, то она выполнена не будет. После того, как куки отправлены, они не сразу отображаются в массиве $_COOKIE, потому что массив обновляется один раз при запуске скрипта.

Сессии и куки решают примерно одинаковые задачи. Каждый раз, когда нужно сохранить данные во время присутствия пользователя на сайте, программист решает, что для этого использовать, сессии или куки. Сессии более безопасны, ведь к данным, находящимся на сервере, получить доступ гораздо сложнее. Поэтому, если данные могут представлять какую-то ценность, то лучше использовать сессии. А если информация не важная, то её можно записывать в куки, чтобы не загружать сервер. Это может быть применено для хранения учётных данных пользователя, чтобы он мог зайти на сайт через какое-то время и ему не нужно было заново вводить логин и пароль, а он сразу заходил как зарегистрированный пользователь.