Оглавление

24.3. Работа с cookies. Создаем индивидуальный счетчик посещений

Web-браузеры позволяют сохранять небольшой объем информации в специ­альном текстовом файле на компьютере пользователя. Такая информация называется cookies. Возможность использования cookies можно отключить в настройках Web-браузера.

 

Для записи cookies используется функция setcookie(). Функция имеет сле­дующий формат:

setcookie(<Имя>, <Значение>, [<Время жизни>], [<Путь>], [<Домен>],

[<Способ передачи>]);

 

Большинство параметров не являются обязательными. Если не указано <Вре­мя жизни> cookies, то оно будет удалено сразу после закрытия Web-браузера:

setcookie("var1", "12");
setcookie("var2", "15", time() + 86400);

Последнее выражение устанавливает cookies на один день. (1)

 

 

Считывание cookies производится следующим образом:

echo $_COOKIE['var1'];
echo $_COOKIE['var2'];

Все установленные cookies доступны через переменную окружения $_SERVER['HTTP_COOKIE']:

$cookies = $_SERVER['HTTP_COOKIE'];

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

 

"var1=12; var2=15"

 

Для удаления cookies следует установить cookies с прошедшей датой.

 

В качестве примера использования cookies создадим счетчик посещений (листинг 40).

 

<?php
if (!isset($_COOKIE['id_count'])) $id_count = 0;
else $id_count = $_COOKIE['id_count'];
$id_count++;
setcookie('id_count', $id_count, 0x6FFFFFFF);
echo 'Вы посетили ресурс ' . $id_count . ' раз';
?>

 

Если в cookies сохраняется строка, состоящая из русских букв, то ее следует закодировать, например, с помощью функции urlencode(). Раскодировать строку можно с помощью функции urldecode().

 

Сохранить массив в cookies позволяет функция serialize(). Чтобы получить обратно массив, следует использовать функцию unserialize().

Примечания:
  • Так как функция setcookie() устанавливает заголовки ответа сервера, то перед функцией не должно быть никаких операторов вывода. Даже пустая строка перед открывающим PHP-дескриптором (<?php) вызовет ошибку. Кроме того, при использовании кодировки UTF-8 файл должен быть в коди­ровке UTF-8 без BOM.

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити