Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Функция setCookie(name, value, options)




Куки, document.cookie

Для чтения и записи cookie используется свойство document.cookie. Однако, оно представляет собой не объект, а строку в специальном формате, для удобной манипуляций с которой нужны дополнительные функции.

Чтение document.cookie

Наверняка у вас есть cookie, которые привязаны к этому сайту. Давайте полюбуемся на них. Вот так:

 

 

alert(document.cookie);

Эта строка состоит из пар ключ=значение, которые перечисляются через точку с запятой с пробелом"; ".

Значит, чтобы прочитать cookie, достаточно разбить строку по "; ", и затем найти нужный ключ. Это можно делать либо через split и работу с массивом, либо через регулярное выражение.

Функция getCookie(name)

Следующая функция getCookie(name) возвращает cookie с именем name:

// возвращает cookie с именем name, если есть, если нет, то undefinedfunction getCookie(name) { var matches = document.cookie.match(new RegExp("(?:^|;)" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)")); return matches? decodeURIComponent(matches[1]): undefined;}

Обратим внимание, что значение может быть любым. Если оно содержит символы, нарушающие форматирование, например, пробелы или;, то оно кодируется при помощи encodeURIComponent. Функция getCookie автоматически раскодирует его.

Запись в document.cookie

В document.cookie можно писать. При этом запись не перезаписывает существующие cookie, а дополняет к ним!

Например, такая строка поставит cookie с именем userName и значением Vasya:

 

 

document.cookie = "userName=Vasya";

…Однако, всё не так просто. У cookie есть ряд важных настроек, которые очень желательно указать, так как значения по умолчанию у них неудобны.

Эти настройки указываются после пары ключ=значение, каждое — после точки с запятой:

path=/mypath

Путь, внутри которого будет доступ к cookie. Если не указать, то имеется в виду текущий путь и все пути ниже него.

Как правило, используется path=/, то есть cookie доступно со всех страниц сайта.

domain=site.com

Домен, на котором доступно cookie. Если не указать, то текущий домен. Допустимо указывать текущий домен site.com и его поддомены, например forum.site.com.

Если указать специальную маску.site.com, то cookie будет доступно на сайте и всех его поддоменах. Это используется, например, в случаях, когда кука содержит данные авторизации и должна быть доступна как на site.com, так и на forum.site.com.

expires=Tue, 19 Jan 2038 03:14:07 GMT

Дата истечения куки в формате GMT. Получить нужную дату можно, используя объект Date. Его можно установить в любое время, а потом вызвать toUTCString(), например:

// +1 день от текущего моментаvar date = new Date;date.setDate(date.getDate() + 1);alert(date.toUTCString());

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

Secure

Cookie можно передавать только по HTTPS.

Например, чтобы поставить cookie name=value по текущему пути с датой истечения через 60 секунд:

 

 

var date = new Date(new Date().getTime() + 60 * 1000);document.cookie = "name=value; path=/; expires=" + date.toUTCString();

Чтобы удалить это cookie:

 

 

var date = new Date(0);document.cookie = "name=; path=/; expires=" + date.toUTCString();

При удалении значение не важно. Можно его не указывать, как сделано в коде выше.

Функция setCookie(name, value, options)

Если собрать все настройки воедино, вот такая функция ставит куки:

function setCookie(name, value, options) { options = options || {}; var expires = options.expires; if (typeof expires == "number" && expires) { var d = new Date(); d.setTime(d.getTime() + expires * 1000); expires = options.expires = d; } if (expires && expires.toUTCString) { options.expires = expires.toUTCString(); } value = encodeURIComponent(value); var updatedCookie = name + "=" + value; for (var propName in options) { updatedCookie += "; " + propName; var propValue = options[propName]; if (propValue!== true) { updatedCookie += "=" + propValue; } } document.cookie = updatedCookie;}

Аргументы:

Name

название cookie

Value

значение cookie (строка)

Options

Объект с дополнительными свойствами для установки cookie:

Expires

Время истечения cookie. Интерпретируется по-разному, в зависимости от типа:

  • Число — количество секунд до истечения. Например, expires: 3600 — кука на час.
  • Объект типа Date — дата истечения.
  • Если expires в прошлом, то cookie будет удалено.
  • Если expires отсутствует или 0, то cookie будет установлено как сессионное и исчезнет при закрытии браузера.

Path

Путь для cookie.

Domain

Домен для cookie.

Secure

Если true, то пересылать cookie только по защищенному соединению.

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...