Скриптовый язык PHP. Механизм cookies

Реализация механизма cookies представлена единственной функцией setcookie(). Как и в случае с HTTP заголовками, эта функция должна быть вызвана до отправки каких–либо данных удаленному клиенту, не допускаются даже «пустые» символы, то есть пробел, символы перевода строки и так далее.

Функция имеет следующий синтаксис:

setcookie(имя куки, значение, срок годности, информация о пути, домен, защищенность)

Все параметры, кроме имени cookie, являются необязательными. Значением, которое несет cookie, может быть любая строка ASCII символов. Например, можно установить cookie с именем и фамилией посетителя, которые он до этого ввел в поле формы.

$data = $_POST["name"]."||".$_POST["surname"];

setcookie("username", $data);

Заметьте, что отсылаемые данные должны быть оформлены в виде строки, попытка прочитать отосланный ранее массив значений ни к чему не приведет. Для того чтобы сохранить в cookie массив, следует упаковать его в строку с помощью функции serialize(), а при извлечении распаковать обратно в массив при помощи функции unserialize().

Cookie, установленная в вышеуказанном примере, будет уничтожена сразу после закрытия браузера пользователем, так как по умолчанию срок жизни cookie устанавливается в ноль. Чтобы изменить этот порядок, необходимо указать третий параметр expire. Определение этого параметра можно произвести двуми способами:

– задать отностительный срок действия с помощью функции time(), к которой прибавляется время в секундах для хранения cookie. Например, чтобы определить cookie на два часа необходимо написать:

setcookie("test 1", "это тестовая куки", time() + 3600 * 2);

Второй способ – задание абсолютного срока истечения годности cookie. Он устанавливается с помощью функции mktime(), которая возвращает конкретную дату удаления куки. Если необходимо задать срок жизни cookie до полуночи 1 сентября 2008 года, то следует определить cookie так:

setcooikie("test 2", "куки с абсолютной датой удаления", mktime(0, 0, 0, 9, 1, 2008);

Необязательный параметр пути ограничивает область действия cookie в пределах определенных директорий. Причем в эту область входят все пути, начинающиеся со значения в этом параметре. Например:

setcookie("test 3, "", 0, "/mus");

Мы установили cookie, пропустив параметры значения и времени и определив область действия всеми путями, начинающимися со строки "/mus", то есть сюда входят и директория "/music/", и "/museums/". Чтобы однозначно определить путь, необходимо завершить путь слешем. То есть для ограничения действия куки каталогом "/mus", необходимо было написать в параметре "/mus/".

Следующим опциональным параметром является параметр определения действия cookie в пределах указанного домена. Причем значению этого параметра "someserver.com" соответствует только сайт с адресом http://someserver.com, а значению ".someserver.com" соответствуют уже и http://someserver.com, и http://mail.someserver.com, и http://my–someserver.com, то есть все домены, кончающиеся данной строкой.

Последний параметр функции setcookie() указывает на то, что данная cookie должна быть послана через защищенное соединение (HTTPS). Этот параметр необходим при установке cookie с конфеденциальными данными.

setcookie("my_cookie", $value, time() + 3600 * 24 * 5, "/", ".someserver.com", 1);

Обращение к данным, сохраненным в cookie, происходит через суперглобальный массив $_COOKIE, используя в качестве индекса имя cookie. Например, продолжая пример выше, прочесть cookie можно следующим образом:

echo "У вас сохранены следующие данные:<br>";
echo $_COOKIE["my_cookie"];

Удаление cookie производится отправкой новой cookie с именем удаляемой без каких–либо дополнительных параметров.

Например:

$data = $my_cookie;

setcookie("my_cookie");
echo "Следующие данные были удалены:<br>". $data;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: