cookies. Сохранение русского текста в cookies

Опубликовал: Monday, April 30, 2024 в категории HTML | Пока нет комментариев

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

if (navigator.cookieEnabled) {

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

}

Запись cookies производится путем присвоения значения свойству cookie

объекта document в следующем формате:

document.cookie = "<Имя>=<Значение>; [expires=<Дата>;] [domain=<Имя домена>;] [path=<Путь>;] [secure;]";

Здесь используются следующие параметры:

? <Имя>=<Значение> задает имя сохраняемой переменной и ее значение.

Это единственный обязательный параметр. Если не задан параметр expires, то по истечении текущего сеанса работы Web-браузера cookies будут автоматически удалены;

? expires указывает дату удаления cookies в следующем формате:

Thu, 01 Jan 2024 00:00:01 GMT

Получить дату в этом формате можно с помощью методов setTime() и toGMTString() класса Date. Методу setTime() нужно передать текущее время в миллисекундах плюс время хранения cookies в миллисекундах. Текущее время можно получить с помощью метода getTime(). Рассчи- тать время хранения cookies можно исходя из следующих соотношений:

• 1 секунда = 1000 миллисекунд;

• 1 минута = 60 секунд = 60 000 миллисекунд;

• 1 час = 60 минут = 3600 секунд = 3 600 000 миллисекунд;

• 1 день = 24 часа = (24?3 600 000) миллисекунд = 86 400 000 миллисе-

кунд.

Например:

var d = new Date();

d.setTime(d.getTime()+3600000); // Задан 1 час

var End_Date = d.toGMTString(); // Дата удаления cookies

? domain=<Имя домена> задает доменную часть URL-адреса, для которой действует данный cookies;

? path=<Путь> задает часть URL-адреса, определяющую путь к докумен-

там, для которых действует данный cookies.

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

document:

var cookies = document.cookie;

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

тановленные пары имя=значение через точку с запятой:

"имя1=значение1; имя2=значение2"

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

В качестве примера сохраним имя и фамилию пользователя, и при следую- щем посещении будем приветствовать его, используя сохраненные данные (листинг 3.66). Добавим также возможность удаления cookies. Для совмести- мости закодируем введенные данные с помощью метода escape(), а при вы- воде раскодируем их с помощью метода unescape(). Это позволяет безопас- но сохранять значения, введенные кириллицей.

Листинг 3.66. Установка и удаление cookies

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>

<title>Установка и удаление cookies</title>

<meta http-equiv="Content-Type" content="text/html; charset=windows-

1251">

<script type="text/javascript">

<!-

function f_cookies() {

if (navigator.cookieEnabled) {

var text1 = document.getElementById("txt1"); var text2 = document.getElementById("txt2"); if (text1.value != "" && text2.value != "") {

var d = new Date();

d.setTime(d.getTime()+3600000); // Задан 1 час

var End_Date = d.toGMTString(); // Дата удаления cookies var Str = "name1=" + escape(text1.value);

Str += "; expires=" + End_Date + ";";

document.cookie = Str;

Str = "name2=" + escape(text2.value); Str += "; expires=" + End_Date + ";"; document.cookie = Str;

text1.value = ""; text2.value = ""; f_load();

}

else {

window.alert("Не заполнено обязательное поле");

}

}

}

function f_cookies_del() {

if (navigator.cookieEnabled) {

if (document.cookie != "") { var d = new Date(); d.setTime(1000); // Дата в прошлом var End_Date = d.toGMTString();

document.cookie = "name1=; expires=" + End_Date + ";";

document.cookie = "name2=; expires=" + End_Date + ";";

f_load();

}

}

}

function f_load() {

if (navigator.cookieEnabled) {

var div1 = document.getElementById("div1");

if (document.cookie != "") {

var arr1, arr2;

var obj = {};

var Str = document.cookie;

if (Str.indexOf("; ") != -1) {

arr1 = Str.split("; ");

for (var i=0, c=arr1.length; i<c; i++) { arr2 = arr1[i].split("="); obj[arr2[0]] = arr2[1];

}

}

else {

arr2 = Str.split("=");

obj[arr2[0]] = arr2[1];

}

Str = "Привет, " + unescape(obj.name2).replace("<", "<"); Str += " " + unescape(obj.name1).replace("<", "<"); div1.innerHTML = Str;

}

else div1.innerHTML = "";

}

}

//->

</script>

</head>

<body onload="f_load();">

<div id="div1"></div>

<div>

Введите ваше имя:<br>

<input type="text" id="txt1"><br>

Введите вашу фамилию:<br>

<input type="text" id="txt2"><br>

<input type="button" value="Сохранить" onclick="f_cookies();"><br>

<input type="button" value="Удалить cookies" onclick="f_cookies_del();">

</div>

</body>

</html>

Источник: Прохоренок Н. А. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера. — 3-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2010. — 912 с.: ил. + Видеокурс (на CD-ROM) — (Профессиональное программирование)

Похожие посты:

Комментировать

Your email address will not be published. Required fields are marked *