JavaScript и файлы cookie
Что такое файлы cookie?
Веб-браузеры и серверы используют протокол HTTP для связи, а HTTP - это протокол без сохранения состояния. Но для коммерческого веб-сайта требуется поддерживать информацию о сеансе между разными страницами. Например, регистрация одного пользователя заканчивается после заполнения множества страниц. Но как поддерживать информацию о сеансах пользователей на всех веб-страницах.
Во многих ситуациях использование файлов cookie является наиболее эффективным методом запоминания и отслеживания предпочтений, покупок, комиссионных и другой информации, необходимой для лучшего взаимодействия с посетителями или статистики сайта.
Как это устроено ?
Ваш сервер отправляет некоторые данные в браузер посетителя в виде файла cookie. Браузер может принять файл cookie. Если это так, он сохраняется в виде простой текстовой записи на жестком диске посетителя. Теперь, когда посетитель переходит на другую страницу вашего сайта, браузер отправляет тот же файл cookie на сервер для поиска. После получения ваш сервер знает / запоминает, что было сохранено ранее.
Файлы cookie представляют собой запись данных в виде простого текста из 5 полей переменной длины:
Expires- Дата истечения срока действия cookie. Если это поле пусто, срок действия cookie истечет, когда посетитель закроет браузер.
Domain - Доменное имя вашего сайта.
Path- Путь к каталогу или веб-странице, в которой установлен файл cookie. Это может быть пустое поле, если вы хотите получить cookie из любого каталога или страницы.
Secure- Если это поле содержит слово «безопасный», то файл cookie может быть получен только с помощью безопасного сервера. Если это поле пустое, такое ограничение отсутствует.
Name=Value - Файлы cookie устанавливаются и извлекаются в виде пар "ключ-значение".
Файлы cookie изначально были разработаны для программирования CGI. Данные, содержащиеся в файле cookie, автоматически передаются между веб-браузером и веб-сервером, поэтому сценарии CGI на сервере могут читать и записывать значения файлов cookie, которые хранятся на клиенте.
JavaScript также может управлять файлами cookie с помощью cookie собственность Documentобъект. JavaScript может читать, создавать, изменять и удалять файлы cookie, относящиеся к текущей веб-странице.
Хранение файлов cookie
Самый простой способ создать файл cookie - присвоить строковое значение объекту document.cookie, который выглядит следующим образом.
document.cookie = "key1 = value1;key2 = value2;expires = date";
Здесь expiresатрибут не является обязательным. Если вы укажете для этого атрибута действительную дату или время, то срок действия cookie истечет в указанную дату или время, и после этого значение файлов cookie не будет доступно.
Note- Значения файлов cookie не могут включать точки с запятой, запятые или пробелы. По этой причине вы можете использовать JavaScriptescape()функция для кодирования значения перед сохранением его в cookie. Если вы это сделаете, вам также придется использовать соответствующийunescape() функция, когда вы читаете значение cookie.
пример
Попробуйте следующее. Он устанавливает имя клиента во входном файле cookie.
<html>
<head>
<script type = "text/javascript">
<!--
function WriteCookie() {
if( document.myform.customer.value == "" ) {
alert("Enter some value!");
return;
}
cookievalue = escape(document.myform.customer.value) + ";";
document.cookie = "name=" + cookievalue;
document.write ("Setting Cookies : " + "name=" + cookievalue );
}
//-->
</script>
</head>
<body>
<form name = "myform" action = "">
Enter name: <input type = "text" name = "customer"/>
<input type = "button" value = "Set Cookie" onclick = "WriteCookie();"/>
</form>
</body>
</html>
Вывод
Теперь на вашем компьютере есть файл cookie с именем name. Вы можете установить несколько файлов cookie, используя несколько пар ключ = значение, разделенных запятыми.
Чтение файлов cookie
Прочитать файл cookie так же просто, как написать его, потому что значением объекта document.cookie является файл cookie. Таким образом, вы можете использовать эту строку всякий раз, когда хотите получить доступ к cookie. Строка document.cookie будет содержать список пар имя = значение, разделенных точкой с запятой, гдеname - это имя файла cookie, а значение - его строковое значение.
Вы можете использовать строки ' split() функция для разбиения строки на ключ и значения следующим образом:
пример
Попробуйте следующий пример, чтобы получить все файлы cookie.
<html>
<head>
<script type = "text/javascript">
<!--
function ReadCookie() {
var allcookies = document.cookie;
document.write ("All Cookies : " + allcookies );
// Get all the cookies pairs in an array
cookiearray = allcookies.split(';');
// Now take key value pair out of this array
for(var i=0; i<cookiearray.length; i++) {
name = cookiearray[i].split('=')[0];
value = cookiearray[i].split('=')[1];
document.write ("Key is : " + name + " and Value is : " + value);
}
}
//-->
</script>
</head>
<body>
<form name = "myform" action = "">
<p> click the following button and see the result:</p>
<input type = "button" value = "Get Cookie" onclick = "ReadCookie()"/>
</form>
</body>
</html>
Note - здесь length это метод Arrayкласс, который возвращает длину массива. Мы обсудим массивы в отдельной главе. К тому времени, пожалуйста, попробуйте его переварить.
Note- Возможно, на вашем компьютере уже установлены другие файлы cookie. Приведенный выше код отобразит все файлы cookie, установленные на вашем компьютере.
Установка даты истечения срока действия файлов cookie
Вы можете продлить срок действия файла cookie за пределами текущего сеанса браузера, установив дату истечения срока действия и сохранив дату истечения срока действия в файле cookie. Это можно сделать, установив‘expires’ атрибут к дате и времени.
пример
Попробуйте следующий пример. Он показывает, как продлить срок действия файла cookie на 1 месяц.
<html>
<head>
<script type = "text/javascript">
<!--
function WriteCookie() {
var now = new Date();
now.setMonth( now.getMonth() + 1 );
cookievalue = escape(document.myform.customer.value) + ";"
document.cookie = "name=" + cookievalue;
document.cookie = "expires=" + now.toUTCString() + ";"
document.write ("Setting Cookies : " + "name=" + cookievalue );
}
//-->
</script>
</head>
<body>
<form name = "myform" action = "">
Enter name: <input type = "text" name = "customer"/>
<input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/>
</form>
</body>
</html>
Вывод
Удаление файла cookie
Иногда вам может понадобиться удалить куки, чтобы последующие попытки прочитать куки ничего не дали. Для этого вам просто нужно установить дату истечения срока действия в прошлом.
пример
Попробуйте следующий пример. В нем показано, как удалить файл cookie, установив срок его действия на один месяц позже текущей даты.
<html>
<head>
<script type = "text/javascript">
<!--
function WriteCookie() {
var now = new Date();
now.setMonth( now.getMonth() - 1 );
cookievalue = escape(document.myform.customer.value) + ";"
document.cookie = "name=" + cookievalue;
document.cookie = "expires=" + now.toUTCString() + ";"
document.write("Setting Cookies : " + "name=" + cookievalue );
}
//-->
</script>
</head>
<body>
<form name = "myform" action = "">
Enter name: <input type = "text" name = "customer"/>
<input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/>
</form>
</body>
</html>