Введення в cookies, html

cookie є рішенням однієї з спадкових проблем http специфікації. Ця проблема полягає в непостійності з'єднання між клієнтом і сервером, як при ftp або telnet сесії, тобто для кожного документа (або файла) при передачі по http протоколу надсилається окремий запит. Включення cookie в http протокол дало часткове вирішення цієї проблеми.







cookie це невелика порція інформації, яку сервер передає клієнту. Клієнт (броузер) буде зберігати цю інформацію і передавати її серверу з кожним запитом як частина http заголовка. Деякі cookie зберігаються тільки протягом однієї сесії, вони віддаляються після закриття броузера. Інші, встановлені на певний період часу, записуються в файл. Зазвичай цей файл називається 'cookie.txt'.

Що можна робити за допомогою cookie?

Які браузери підтримують механізм cookies?

Не всі, звичайно, але найпопулярніші підтримують. Я точно знаю, що netscape (починаючи з найпершої версії), microsoft ie (трійка і четвірка - точно, про попередні не знаю), mosaic

Установка cookie.

Як виставляти cookies клієнтові залежить від того, як вони будуть використовуватися в подальшому. Це можна робити як за допомогою скриптів, так і за допомогою meta-тегів html. Можна маніпулювати часом життя виставлених cookies і встановлювати місце, в якому установки дійсні. Загальний формат установки такий: set-cookie: name = value; expires = date; domain = domain_name; path = path; secure

Установка cookie за допомогою html.

Найпростіший спосіб виставити cookie - використовувати відповідний meta-тег в заголовку будь-якого статичного html документа.

Установка cookie з використанням perl / cgi.

Інший спосіб виставити cookie - за допомогою серверного скрипта. На perl це буде виглядати приблизно так: перед тим як видавати серверний відповідь генерується http заголовок

Щоб прочитати скриптом значення cookie, яке було встановлено раніше, і відповідним чином виконати скрипт, використовується змінна оточення http_cookie. На perl це буде виглядати так:

Установка декількох cookie одночасно.

Як за допомогою html, так і за допомогою скриптів можна встановлювати кілька cookie разом:

cookies в php

Розглянемо найпростіший приклад - установка на комп'ютері користувача булки з інформацією про те, чи був він на цій сторінці чи ні. Це робиться так:







Після цього у вас на диску з'являється c cookie з інформацією про те, що цю сторінку ви вже відвідували. Як довго буде діяти cookie? Оскільки ми використовували тільки два параметри, а інші потрібні параметри залишили без уваги, в них встановилися стандартні значення: діє до закриття всіх вікон браузера, в домені встановив булку скрипта, по незахищеному з'єднанню. А якщо ми хочемо порахувати скільки відвідувань сталося протягом року? Як встановити ці значення? Скористаємося повним синтаксисом setcookie:

Як бачите, ми можемо вказати не тільки ім'я cookie і значення, але також і час дії (expire - в секундах, що пройшли з 1970-го року), шлях (стандартне значення "/"), домен ( "домен.установівшего.кукі. скрипта ") і секьюрность (0), тобто також і область дії cookie.

Існує обмеження по кількості cookie на домен (20 штук), тому насправді в cookie зберігається масив, і ми можемо в одній булці зберігати ім'я користувача і кількість його заходів на сторінку (просто використовуйте значення cookie як масив). Розглянемо скрипт - лічильник відвідування сторінки користувачем.

Як бачите, для початку ми перевіряємо, чи є вже на комп'ютері користувача cookie з ім'ям "count", і, якщо його немає, вважаємо, що користувач був на сторінці 0 раз. Доступ до інформації з cookie може бути отриманий двома способами: по-перше, якщо в php.ini встановлена ​​настройка register_globals, автоматично створюється змінна $ count, по-друге, додається значення в масив $ http_cookie_vars. Більш правильним є використання другого способу, тому що php дуже любить створювати змінні, і в цьому випадку ми просто не знаємо - порода ця змінна в результаті передачі скрипту даних в query_string, через метод post або через cookie. Крім того, в останніх версіях php (4.2) функція register_globals за замовчуванням відключена, так що залишається взагалі тільки один спосіб отримати інформацію.

Наступним кроком є ​​додаток до лічильника відвідувань одинички. Логічно - користувач адже зайшов на сторінку? Значить, збільшив кількість відвідувань на одиничку. Потім (до видачі будь-яких написів) ми повинні встановити cookie c новою інформацією, діючий годину. Щоб отримати час в секундах від 1970-го року, використовується функція time (), до якої ми додаємо шуканий час (3600 секунд). Слід зазначити, що час встановлюється в часовому поясі користувача, так що запросто може виявитися, що час життя cookie вже минув. З цим треба боротися!

І тільки після того, як ми встановили cookie ми можемо почати щось показувати користувачеві, що ми і робимо, друкуючи кількість відвідувань їм цієї сторінки.

Увага! cookies можна встановлювати тільки до якої б то не було видачі тексту! Прослідкуйте, щоб до використання setcookie не було операторів print. Повідомлення про помилки теж псують нам установку cookie. Вся проблема полягає в тому, що інформація про cookie відноситься до області заголовків, а то, що видає print - немає.

Але ми повинні не тільки вміти додати cookie, а й видалити. Це робиться все тієї ж багатостраждальної функцією setcookie, тільки на цей раз ми викликаємо її з одним єдиним параметром - ім'ям cookie:







Схожі статті