Работа с cookies
Куки (cookies) — это информация, которую веб-сайты хранят на вашем компьютере в специальном текстовом файле. Как правило, куки хранят ваши личные настройки для веб-сайта, например предпочитаемый язык, ваше имя, почту, логин, пароль от вашей учетки и т. д. Когда Вы вернетесь на сайт, браузер отправит обратно куки, которые принадлежат этому сайту. Это позволяет сайту предоставить вам информацию, соответствующую вашим потребностям. Возможность использования cookies можно отключить в настройках браузера.
Для записи cookies используется функция setcookie(). Данная функция имеет следующие аргументы:
- name — имя cookie;
- value — значение, хранящееся в cookie с именем $name;
- expire — время жизни cookie;
- path — путь, по которому доступен cookie;
- domain — домен, из которого доступен cookie;
- secure — директива, определяющая, доступен ли cookie не по запросу HTPPS. По умолчанию эта директива имеет значение 0, что означает возможность доступа к cookie по обычному запросу HTTP.
Чаще всего указывают только имя, значение и время жизни куки:
1
|
setcookie("name", "Oleg", time() + 3600);
|
Это выражение устанавливает cookies на один час. Если не указывать время жизни cookies, то кука будет удалена сразу после закрытия браузера.
Обратите внимание что, функция setcookie() устанавливает заголовки ответа сервера, следовательно перед функцией не должно быть никаких операторов вывода. Даже пустая строка перед открывающим дескриптором вызовет ошибку.
Итак после того как куки установлены, доступ к ним может быть получен при загрузке следующей страницы через массив $_COOKIE:
1
|
echo $_COOKIE['name'];
|
Хранить в куках можно не более чтырех килобайт информации. Удалить куки можно указав ей отрицательное время жизни или передав ей пустое значение.
В качестве примера, создадим примитивный счетчик посещений:
1
|
<?php if (!isset($_COOKIE['count'])) $count = 0; else $count = $_COOKIE['count']; $count++; setcookie('count', $count, 604800; echo 'Вы посетили ресурс ' . $count . ' раз'; ?>
|
Обратите внимание что, если в куках вы сохраняете строку состоящую из русских буков, то ее следует закодировать.