PHP — cookie (файли cookies)

19

Від автора: в PHP cookie — це текстові файли, що зберігаються на комп’ютері клієнта, вони зберігаються в цілях відстеження. PHP прозоро підтримує HTTP файли cookie.

Для ідентифікації повертаються користувачів передбачено три етапи:

Файл на сервері відправляє набір файлів cookie у браузері. Наприклад, ім’я, вік або ідентифікаційний номер і т. д.

Браузер зберігає цю інформацію на локальному комп’ютері для майбутнього використання.

Коли в наступний раз браузер відправляє будь-який запит до веб-серверу, він відправляє ці файли на сервер і сервер використовує цю інформацію для ідентифікації користувача.

У цій статті ми розповімо, як встановлювати файли cookie, як працювати з ними і як їх видаляти.

Принцип роботи файлів cookie

Файли cookie зазвичай встановлюються в HTTP-заголовку (хоча через JavaScript також можна встановлювати cookie безпосередньо в браузері). PHP-скрипт, який встановлює cookie, може відправляти заголовки, виглядають приблизно таким чином:

HTTP/1.1 200 OK
Date: Fri, 04 Feb 2000 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT;
path=/; domain=tutorialspoint.com
Connection: close
Content-Type: text/html

Як ви можете бачити, заголовка Set-Cookie містить кілька значень імені, дату GMT, шлях і домен. Ім’я і значення будуть закодовані в URL-адресі. Поле expires — це інструкція для браузера — «забути» cookie після закінчення заданого часу і дати.

Якщо браузер налаштований для зберігання файлів cookie, він буде зберігати цю інформацію до закінчення терміну дії. Якщо користувач переходить в браузері на будь-яку сторінку, яка відповідає шляхи і домену файлу cookie, браузер відправить cookie на сервер. Заголовки браузера можуть виглядати приблизно так:

GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name=xyz

Після цьогу скрипт PHP отримує доступ до файлу cookie змінних середовища $_COOKIE або $HTTP_COOKIE_VARS[], які містять всі імена і значення файлів cookie. Соокіе можна отримати, використовуючи $HTTP_COOKIE_VARS[«name»].

Налаштування файлів cookie за допомогою PHP

PHP надає для установки файлу cookie функцію setcookie(). Для цієї функції потрібно до шести аргументів, і вона повинна викликатися до тега html. Для кожного файлу cookie цю функцію потрібно викликати окремо.

setcookie(name, value, expire, path, domain, security);

Опис всіх аргументів —

name — встановлює ім’я файлу cookie і зберігається у змінній середовища з ім’ям HTTP_COOKIE_VARS. Ця змінна використовується для доступу до файлів cookie.

value — встановлює значення іменованої змінної і являє собою контент, який ви дійсно хочете зберегти.

expiry — визначає час зберігання cookie в секундах з 00:00:00 за Гринвічем 1 січня 1970 року. Після закінчення цього часу cookie стане недоступним. Файли cookie видаляються після закриття браузера.

path — Вказує каталоги, для яких дійсний файл cookie. Одиночний символ прямий косою риси визначає, що файл cookie є дійсним для всіх каталогів.

domain — може використовуватися для вказівки імені домену в дуже великих доменах і повинно містити не менш двох періодів. Усі файли cookie дійсні тільки для хоста і домену, для яких вони створені.

security. Може бути встановлено 1, щоб вказати, що файл cookie повинен передаватися лише через захищене з’єднання HTTPS. В іншому випадку це значення дорівнює 0, і це означає, що файл cookie може передаватися через звичайне з’єднання HTTP.

У наступному прикладі ми задамо для cookie name і age, згідно з яким ці файли cookie стануть не дійсними через годину.

Setting Cookies with PHP

Доступ до файлів cookie за допомогою PHP

PHP надає безліч способів доступу до файлів cookie. Найпростіший з них — використовувати змінні $_COOKIE або $HTTP_COOKIE_VARS. У наступному прикладі ми отримуємо доступ до всіх файлів cookie, зазначеним у наведеному вище прикладі.

Accessing Cookies with PHP
«;
/* це еквівалентно наступному */
echo $HTTP_COOKIE_VARS[«name»]. «
«;
echo $_COOKIE[«age»] . «
«;
/* це еквівалентно наступному */
echo $HTTP_COOKIE_VARS[«age»] . «
«;
?>

Ви можете використовувати функцію isset(), щоб перевірити, чи встановлений файл cookie чи ні.

Accessing Cookies with PHP
«;
else
echo «Sorry… Not recognized» . «
«;
?>

Видалення Cookie за допомогою PHP

Офіційно, щоб видалити cookie, ви повинні викликати setcookie() тільки з одним аргументом name, але цей метод не завжди працює, і не є надійним. Краще всього встановити cookie з минулим періодом дії —

Deleting Cookies with PHP