Вверх

Блог
RSS лента

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

PHP и Cookies

Cookies - это механизм хранения данных броузером удаленного компьютера для идентификации возвращающихся посетителей и хранения параметров веб-страниц (например, переменных).

Приведем пример использования Cookies на конкретном примере.

Предположим, нам нужно написать счетчик посещения сайта. Нам нужно знать, какое число посещений сайта осуществлялось каждым конкретным посетителем.

Данную задачу можно решить двумя способами. Первый из них заключается в ведении учета IP-адресов пользователей. Для этого нужна база данных всего из одной таблицы, примерная структура которой такая:
IP-адрес - Число посещений
210.124.134.203 - 7
212.201.78.207 - 14
83.103.203.73 - 3

Когда пользователь заходит на сайт, нам нужно определить его IP-адрес, найти в базе данных информацию о его посещениях, увеличить счетчик и вывести его в браузер посетителя. Написать обработчик (скрипт) подобной процедуры несложно. Однако при использовании такого метода у нас появляются проблемы следующего характера:
Для каждого IP-адреса нужно вести учет в одной таблице, которая может быть очень большой. А из этого следует, что мы нерационально используем процессорное время и дисковое пространство;
У большинства домашних пользователей IP-адреса являются динамическими. То есть, сегодня у него адрес 212.218.78.124, а завтра - 212.218.78.137. Таким образом, велика вероятность идентифицировать одного пользователя несколько раз.

Можно использовать второй способ, который намного легче в реализации и более эффективен. Мы устанавливаем в Cookie переменную, которая будет храниться на диске удаленного пользователя. Эта переменная и будет хранить информацию о посещениях. Она будет считываться скриптом при обращении посетителя к серверу. Выгода такого метода идентификации очевидна. Во-первых, нам не нужно хранить множество ненужной информации о IP-адресах. Во-вторых, нас не интересуют динамические IP-адреса, поскольку данные о своих посещениях хранятся конкретно у каждого посетителя сайта.

Теперь понятно, для чего мы можем использовать Cookie - для хранения небольшой по объему информации у клиента (посетителя) сайта, например: настройки сайта (цвет фона страниц, язык, оформление таблиц и.т.д.), а также другой информации.

Файлы Cookies представляют собой обыкновенные текстовые файлы, которые хранятся на диске у посетителей сайтов. Файлы Cookies и содержат ту информацию, которая была в них записана сервером.

Программирование Cookies

Приступим к программированию Cookies.

Для установки Cookies используется функция SetCookie(). Для этой функции можно указать шесть параметров, один из которых является обязательным:
name - задает имя (строк), закрепленное за Cookie;
value - определяет значение переменной (строка);
expire - время "жизни" переменной (целое число). Если данный параметр не указать, то Cookie будут "жить" до конца сессии, то есть до закрытия браузера. Если время указано, то, когда оно наступит, Cookie самоуничтожится.
path - путь к Cookie (строка);
domain - домен (строка). В качестве значения устанавливается имя хоста, с которого Cookie был установлен;
secure - передача Cookie через защищенное HTTPS-соединение.

Обычно используются только три первые параметра.

Пример установки Cookies:

  1. <?php
  2.  
  3. // Устанавливаем Cookie до конца сессии:
  4. SetCookie("Test","Value");
  5.  
  6. // Устанавливаем Cookie на один час после установки:
  7. SetCookie("My_Cookie","Value",time()+3600);
  8.  
  9. ?>

При использовании Cookies необходимо иметь в виду, что Cookies должны устанавливаться до первого вывода информации в браузер (например, оперетором echo или выводом какой-либо функции). Поэтому желательно устанавливать Cookies в самом начале скрипта. Cookies устанавливаются с помощью определенного заголовка сервера, а если скрипт выводит что-либо, то это означает, что начинается тело документа. В результате Cookies не будут установлены и может быть выведено предупреждение. Для проверки успешности установки Cookies можно использовать такой метод:

  1. <?php
  2. // Устанавливаем Cookie до конца сессии:
  3. // В случае успешной установки Cookie, функция SetCookie возвращает TRUE:
  4. if (SetCookie("Test","Value")) echo "<h3>Cookies успешно установлены!</h3>";
  5. ?>

Функция SetCookie() возвращает TRUE в случае успешной установки Cookie. В случае, если Cookie установить не удается SetCookie() возвратит FALSE и возможно, предупреждение (зависит от настроек PHP). Пример неудачной установки Cookie:

  1. <?php
  2. // Cookies установить не удастся, поскольку перед отправкой
  3. // заголовка Cookie мы выводим в браузер строку 'Hello':
  4. echo "Hello";
  5. // Функция SetCookie возвратит FALSE:
  6. if (SetCookie("Test","Value")) echo "<h3>Cookie успешно установлен!</h3>";
  7. else echo "<h3>Cookie установить не удалось!</h3>";
  8. // Выводит 'Cookie установить не удалось!'.
  9. ?>

Cookie установить не удалось, поскольку перед посылкой заголовка Cookie мы вывели в браузер строку "Hello".

Чтение значений Cookies

Получить доступ к Cookies и их значениям достаточно просто. Они хранятся в суперглобальных массивах и $_COOKIE и $HTTP_COOKIE_VARS.

Доступ к значениям осуществляется по имени установленных Cookies, например:

  1. echo $_COOKIE['my_cookie'];
  2. // Выводит значения установленной Cookie 'My_Cookie'

Пример установки Cookie и последующего его чтения:

  1. <?php
  2. // Устанавливаем Cookie 'test' со значением 'Hello' на один час:
  3. setcookie("test","Hello",time()+3600);
  4. // При следующем запросе скрипта выводит 'Hello':
  5. echo @$_COOKIE['test'];
  6. ?>

В рассмотренном примере при первом обращении к скрипту устанавливается Cookie "test" зо значением "hello". При повторном обращении к скрипту будет выведено значение Cookie "test", то есть строка "Hello".

При чтении значений Cookies обращайте внимание на проверку существования Cookies, например, используя оператор isset(). Либо путем подавления вывода ошибок опереатором @

А вот пример, как построить счетчик числа загрузок страницы с помощью Cookies:

  1. <?php
  2. // Проверяем, был ли уже установлен Cookie 'Mortal',
  3. // Если да, то читаем его значение,
  4. // И увеличиваем значение счетчика обращений к странице:
  5. if (isset($_COOKIE['Mortal'])) $cnt=$_COOKIE['Mortal']+1;
  6. else $cnt=0;
  7. // Устанавливаем Cookie 'Mortal' зо значением счетчика,
  8. // С временем "жизни" до 18/07/29,
  9. // То есть на очень долгое время:
  10. setcookie("Mortal",$cnt,0x6FFFFFFF);
  11. // Выводит число посещений (загрузок) этой страницы:
  12. echo "<p>Вы посещали эту страницу <b>".@$_COOKIE['Mortal']."</b> раз</p>";
  13. ?>

Удаление Cookies

Иногда возникает необходимость удаления Cookies. Сделать это несложно, необходимо лишь вновь установить Cookie с идентичным именем и пустым параметром. Например:

  1. <?php
  2. // Удаляем Cookie 'Test':
  3. SetCookie("Test","");
  4. ?>

Установка массива Cookies и его чтение

Мы может установить массив Cookies, используя квадратные скобки в именах Cookies [], а затем прочитать массив Cookies и значения этого массива:

  1. <?php
  2. // Устанавливаем массив Cookies:
  3. setcookie("cookie[1]", "Первый");
  4. setcookie("cookie[2]", "Второй");
  5. setcookie("cookie[3]", "Третий");
  6.  
  7. // После перезагрузки страницы мы отобразим
  8. // Состав массива Cookies 'cookie':
  9. if (isset($_COOKIE['cookie'])) {
  10.     foreach ($_COOKIE['cookie'] as $name => $value) {
  11.         echo "$name : $value <br>";
  12.     }
  13. }
  14. ?>

Ваша оценка: Пусто Средняя: 4 (5 votes)

Ответить

 
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".
  • Image links with 'rel="lightbox"' in the <a> tag will appear in a Lightbox when clicked on.
  • Image links from G2 are formatted for use with Lightbox2
  • Image links with 'rel="lightshow"' in the <a> tag will appear in a Lightbox slideshow when clicked on.
  • Links to HTML content with 'rel="lightframe"' in the <a> tag will appear in a Lightbox when clicked on.
  • Links to video content with 'rel="lightvideo"' in the <a> tag will appear in a Lightbox when clicked on.
  • Links to inline or modal content with 'rel="lightmodal"' in the <a> tag will appear in a Lightbox when clicked on.

Подробнее о форматировании

Главная | Портфолио | Услуги | Контакты | Блог