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

Получение значения cookie

Итак, мы научились создавать cookie в сценариях JavaScript. Теперь решим другую задачу - определение значения параметров cookie.

Эта задача сводится к простому сканированию текстовой строки, полученной следующим образом:

var szCookieString = document.cookie;

В этой строке вам нужно найти подстроку "Имя=Значение;", а затем извлечь полученное значение.

Для облегчения этой работы можно воспользоваться функцией findCookie. Исходный текст этой функции приведен ниже:

function findCookie(name)

{

var i = 0;

var nStartPosition = 0;

var nEndPosition = 0;

var szCookieString = document.cookie;

while(i <= szCookieString.length)

{

nStartPosition = i;

nEndPosition = nStartPosition + name.length;

If(szCookieString.Substring(

nStartPosition,nEndPosition) == name)

{

nStartPosition = nEndPosition + 1;

nEndPosition =

document.cookie.indexOf(";",nStartPosition);

if(nEndPosition < nStartPosition)

nEndPosition = document.cookie.length;

return document.cookie.substring(

nStartPosition,nEndPosition);

break;

}

i++;

}

return "";

}

После извлечения строки из свойства document.cookie и записи этой строки в переменную szCookieString функция findCookie организует цикл по всем символам этой строки. Условием завершения цикла является просмотр всех szCookieString.length символов.

Сравнивая имя параметра с подстрокой, извлеченной из строки szCookieString при помощи метода substring, функция findCookie пытается найти нужный параметр. Если такая попытка оказывается успешной, функция findCookie пропускает символ присваивания, извлекая значение параметра, ограниченное символом точка с запятой. Это значение возвращается функцией findCookie.

Если же поиск оказывается неудачным, функция findCookie возвращает пустую строку.

Как пользоваться функцией findCookie?

Во-первых, с помощью этой функции вы можете проверить, установлен ли для данного документа cookie с заданным именем:

if(findCookie("Visit") == "")

{

// cookie с именем Visit не установлен

. . .

}

else

{

// cookie с именем Visit установлен

. . .

}

Для того чтобы записать в текстовую переменную значение параметра cookie с заданным именем, вы должны сделать следующее:

var szVisitValue = findCookie("Visit");

Как видите, пользоваться функцией findCookie достаточно просто.

Изменение значения параметра cookie

Для изменения значения параметра cookie с заданным именем вы можете просто вызвать функцию addCookie еще раз:

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

// Значение параметра Count равно 0

. . .

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

// Значение параметра Count равно 5

Здесь мы вначале установили для параметра Count значение 0, а затем изменили это значение на 5.

Удаление cookie

Самый простой способ удалить cookie - установить для него такое время автоматического удаления, которое уже прошло. Для этого нужно получить текущую дату, уменьшить ее, например, на одну микросекунду, а затем изменить значение document.cookie.

Все это делает функция removeCookie:

function removeCookie(name)

{

var now = new Date();

now.setTime(now.getTime() - 1);

var value = findCookie(name);

document.cookie = name + "=" + value +

"; expires=" + now.toGMTString();

}

В последней строке этой функции мы указали такое значение параметра expires, которое вызывает немедленное удаление cookies браузером.

Ограничения на использование cookie

На использование cookie накладываются определенные ограничения, которые мы перечислили ниже:

всего может быть создано не более чем 300 cookie;

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

для каждого домена может быть создано не более 20 cookie

Если указанные значения будут превышены, браузер может удалить самые старые cookie или обрезать значения параметров cookie.

Подсчет количества посещений страницы

Продемонстрируем испольнжаппе cookies на ппшчмом примере, а именно, учете посещения документ по п, юнан' н'м 1ак как чист aiieii, oineaemioe

под хранение cookies, надо перенести п миллисекунды, то дата окончания хранения в данном коде вычисляется по следующей формуле:

(время уничтожения cookie) = (текущее время)

+ (число дней хранения cookie) *24*60*60*1000

Подсчет числа посещений страницы пользователем

<HTML>

<HEAD>

<SCRIPT language=javascript>

function setCookie(name, value, delayExpire, path, domain, secure){

var now = new Date();

now.setTime(now.getTime() + delayExpire * 24 * 60 * 60 * 1000);

var delay = now.toGMTString();

//далее формируется строка с разделителем «?»

var curCookie = name + "=" + escape(value) +

((delayExpire) ? "; expires=" + delay : "") +

((path) ? "; path=" + path : "") + (

(domain) ? "; domain=" + domain : "") +

((secure) ? "; secure" : "")

document.cookie = curCookie

}

function getCookie(name) {

var prefix = name + "=";

var cookieStartIndex = document.cookie.indexOf(prefix);

if (cookieStartIndex == -1) return null;

var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);

if (cookieEndIndex == -1)

cookieEndIndex = document.cookie.length;

return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));

}

function deleteCookie(name, path, domain) {

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