Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Cookies.doc
Скачиваний:
12
Добавлен:
09.04.2015
Размер:
89.6 Кб
Скачать

Cookies

HTML-документы позволяют сохранять небольшой объем информации в специальном файле на компьютере клиента. Данная информация называется cookies (печенье). В Windows cookies хранятся в виде текстовых файлов в папке Documents and Settings\User\Cookies.

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

Cookie - это небольшая порция текстовой информации (строка), которую сервер передает браузеру. Браузер будет хранить эту информацию и передавать ее серверу с каждым запросом как часть HTTP заголовка. Одни значения cookie могут храниться только в течение одной сессии, они удаляются после закрытия броузера. Другие, установленные на некоторый период времени, записываются в файл. Обычно этот файл называется 'cookies.txt' и лежит в рабочей директории установленного на компьютер браузера.

Среди пользователей бытует мнение, что cookies представляют потенциальную опасность, т. к. записывают данные на компьютере клиента. Браузеры позволяют отключить это нежелательное вторжение. Свойство cookieEnabled объекта navigator, которое возвращает логические значения, определяет, запрещено ли в браузере использование cookies. Поэтому, вообще говоря, не следует создавать документы, оперирующие cookies. Но, в то же время, cookies бывают весьма полезными для учета информации о действиях пользователя.

Запись значения cookies производится посредством установки значения свойства cookie объекта document в следующем формате:

name=value; [expires=date;] [domain=domainname;] [path=path;] [secue;]

  • Обязательным элементом формата cookies является только пара name=vaiue, создающая cookies, который будет существовать только в течение текущего сеанса работы браузера.

  • Пара expires=date задает дату (по Гринвичу) окончания хранения cookies в следующем формате:

wkd, day Mоn Year hh:mm: ss GMT

день недели, число Месяц Год: время в миллисекундах по Гринвичу

Например:

Thu, 01 Jan 1970 00:00:01 GMT

  • Пара domain=domainname задает доменную часть URL, для которой действует данный cookies. Если этот параметр опущен, то подразумевается URL-адрес документа, где был установлен cookies.

  • Пара path=path определяет часть адреса URL, задающую путь к документам, для которых действует данный cookies. Если этот параметр опущен, то подразумевается URL-адрес документа, где был установлен cookies.

Каждый cookie не может превышать по своему размеру 4 Кбайт;

Считывание cookies производится свойством cookie объекта document.

Доступ к cookies

У объекта navigator имеется свойство cookieEnabied, которое возвращает true, если в браузере разрешено использование cookies, и false — в противном случае. Следующий код демонстрирует, как выяснить, можно ли использовать cookies:

If (navigator.CookieEnabied)

{

alert("Использование cookies разрешено.")

}

Создание cookie в сценарии JavaScript

Создание cookie предполагает использование свойства document.cookie.

В общем виде сценарий JavaScript может создать cookie следующим образом:

document.cookie = "Имя=Значение";

Здесь мы просто записываем в свойство cookie объекта document текстовую строку, определяющую cookie.

Для пересчета текущей даты в формат GMT в сценариях JavaScript можно использовать встроенные функции, о чем будет рассказано ниже.

В качестве примера приведем исходный текст функции addCookie, которую будем использовать в своих сценариях для создания cookie:

function addCookie(name,value,expires)

{

var now = new Date();

var dtExpiryDate = "";

now.setTime(now.getTime() + //Текущее время в мс

expires * 24 * 60 * 60 * 1000);

dtExpiryDate = now.toGMTString();

document.cookie =

name + "=" + value + ";

expires=" + dtExpiryDate;

}

Функция addCookie получает три параметра.

Через параметр name передается имя параметра, хранящегося в cookie. Параметр value определяет значение этого параметра cookie. Что же касается последнего параметра с именем expires, то он задает интервал времени по отношению к моменту создания cookie, когда этот cookie необходимо удалить.

Самое сложное в функции addCookie - это определение даты удаления cookie и преобразование этой даты в формат GMT. Данная задача решается следующим образом.

Прежде всего функция addCookie создает объект класса Date с помощью ключевого слова new:

var now = new Date();

Записанная таким образом в переменную now дата соответствует моменту вызова функции addCookie.

Далее с помощью метода getTime функция addCookie определяет текущую дату в миллисекундах и прибавляет к результату значение параметра expires, полученное функцией, умноженное на константу (24 * 60 * 60 * 1000):

now.getTime() + expires * 24 * 60 * 60 * 1000

Константа представляет собой количество часов в сутках, умноженное на количество минут в часе, затем на количество секунд в минуте, и, наконец, на количество миллисекунд в секунде.

Результат вычислений записывается при помощи метода setTime в переменную даты now. Теперь здесь хранится дата автоматического уничтожения cookie браузером. Осталось лишь преобразовать эту дату в формат GMT.

Такое преобразование нетрудно сделать с помощью специально предназначенного для этого метода toGMTString, возвращающего текстовую строку в нужном нам формате:

dtExpiryDate = now.toGMTString();

Теперь нам остается только сформировать текстовую строку определения cookie и записать ее в свойство document.cookie:

document.cookie=name+"="+value+";expires="+dtExpiryDate;

На этом создание cookie завершено.

Рассмотрим пример. Следующий код демонстрирует создание cookies при нажатии кнопки Создать cookie, который будет храниться в течение 10 секунд. Кнопка Показать cookies отображает в диалоговом окне созданный cookies. Если нажать эту кнопку позднее, чем через 10 секунд после нажатия кнопки Создать cookies, диалоговое окно остображается пустым.

<HTML>

<SCRIPT language=javascript>

<!--

function setCookie(){

var now = new Date();

var millisecExpires = 10000;

now.setTime(now.getTime() + millisecExpires);

var delay = now.toGMTString();

document.cookie = "name=My Cookies; expires=" + delay;

}

//--!>

</SCRIPT>

<BODY>

<INPUT type=button value="Coздaть cookies" onclick="setCookie()">

</P>

<INPUT type=button value="Показать cookies" onclick="alert(document.cookie);" >

</BODY>

</HTML>

Теперь, когда в нашем распоряжении есть функция addCookie, создание cookie представляет собой очень простую задачу. Например, в следующей строке мы создаем cookie с именем Count, значением 0, причем через 10 дней браузер автоматически удалит этот cookie:

addCookie("Count","0",10);

При необходимости использования других параметров cookie, таких как path или domain, вы можете немного дополнить текст функции addCookie. С этой задачей вы легко справитесь самостоятельно.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]