Учебно-методические материалы для студентов кафедры АСОИУ

Cookie

Маркеры cookies (рус.: печенье; сленг: куки, печеньки) — это небольшие текстовые файлы, которые, согласно протоколу HTTP, веб-сервер может передавать браузеру для сохранения на клиентском компьютере. Сервер имеет также право запросить в будущем у броузера ранее сохраненный маркер. В некоторых случаях, например при работе с Интернет-магазинами и другими полезными сайтами, без «куков» обойтись нельзя, но во многих случаях удаленные серверы беззастенчиво «метят» своих клиентов, преследуя свои собственные, порой не бескорыстные цели. Бегло просмотрев маркеры cookies, хранящиеся на клиентском компьютере, каждый, имеющий к нему доступ, может установить, когда и какие сайты посещал пользователь компьютера.

Актуально для HTTP 1.0: Ввиду того, что протокол HTTP 1.0 не поддерживает сеансов (то есть после получения запроса, его обработки и отправки ответа на уровне протокола HTTP операция является полностью завершенной) возникает необходимость дополнительного средства, позволяющего передавать информацию между http-запросами для организации логических связей между ними. Таким средством и являются сookies – особым образом обрабатываемые небольшие пакеты данных с содержимым произвольного вида.

Сервер устанавливает cookie, задавая при этом время хранения и определяя набор ресурсов, к которым относится этот cookie. Браузер принимает cookie, хранит его заданное время и при каждом обращении к любому ресурсу добавляет в заголовок запроса информацию из всех относящихся к этому ресурсу cookies.

Листинг 1. Управление cookies из javascript.

<script type="text/javascript">
// WARNING: "мопед не мой..."(c) — код не проверен, т.к. не было времени ... (aag)
//установить cookie по имени hi со значением hello
//аргументы: name, value, срок действия в миллисекундах
function setcookie(hi, value, expire){
var exp = new Date();
var cookieexpire = exp.getTime()+expire;
exp.setTime(cookieexpire);
document.cookie=hi+"="+value+";expires="+exp.toGMTString();
}
//прочитать значение из cookie по имени hi
function getcookie(hi){
var search = hi+"=";
if(document.cookie.length>0){ //если cookie существует
offset=document.cookie.indexOf(search)
if(offset!=-1){ //если существует cookie по имени name
offset+=search.length //начало нужного cookie
end=document.cookie.indexOf(";",offset) //конец нужного cookie
if(end==-1){end=document.cookie.length}
return unescape(document.cookie.substring(offset, end))
}
}
}
</script>

Листинг 2. Управление cookies из php.

<?php
$value = 'Hello, World';
//установка куков (см. описание функции setcookie) setcookie("Cookie1", $value);
setcookie("Cookie2", $value, time()+3600); /* срок действия 1 час */
setcookie("Cookie3", $value, time()+3600, "/~user/", "example.com", 1);
// чтение куки (см. описание массивов $_COOKIE и $HTTP_COOKIE_VARS) echo $_COOKIE["Cookie1"];
echo $HTTP_COOKIE_VARS["Cookie2"];
// Вывод всех установленных cookie
print_r($_COOKIE);
?>

CC-BY-SA Анатольев А.Г., 12.08.2013