sonyps4.ru

Скрипт куки на каком языке. Cookies и хранение состояния

Сегодня поработаем с Cookie силами JavaScript. "Для чего это можеть быть нужно?" - спросите вы. Да, для чего угодно, например мы вносим какие-то правки в код и не хотим, чтобы изменения были видны пользователям, очевидное решение сделать проверку на наличие куки у клиента, и если кука есть, то показывать наше изменения этому пользователю. Но как ее повесить только определенному пользователю? Для этого мы и будем использовать JavaScript.

Что такое Cookie?

Cookie(куки) - текстовые файлы ограниченные размером до 4кб, в которые браузер записывает данные полученные от веб серверов(сайтов на которые вы заходили). Могут содержать любую ифнормацию, но в основном хранят такие данные которые позволяют запоминать сайтам своих посетителей, например чтобы на запрашивать данные для авторизации или сохранить информацию о товарах добавленных в корзину. Хранятся данные фалйлы на стороне клиента.

Для работы с куками будем использовать свойство document.cookie предстовляющее собой строку состоящую из пар ключ=значение и разделяемых; и пробелом между собой. Ниже приведен пример того, что выведет запущенный в консоли document.cookie.

Как добавить свою куку силами JS.

Добавить свою куку очень просто. Выполним в консоли document.cookie = "user=Nikola"; Готово, наша кука добавлена. Теперь рассмотрим ряд важных настроек, нужно стараться их указывать, чтобы не использовать настройки по умолчанию.

1. path=/mypath - путь по которому будет доступны cookie, если не указывать, то возмется текущий путь и пути ниже него, поэтому в качестве значения возьмем path=/ т.е. корень, куки доступен со всех страниц сайта.

2. expires - Дата истечения жизни cookie в формате GMT. Если дату не указывать, то куки будут считаться ссессионными и будут удалены после закрытия браузера.

Напишем простую функцию для добавления cookie.

Function setCookie(name, value, days, path) { path = path || "/"; // заполняем путь если не заполнен days = days || 10; // заполняем время жизни если не получен параметр var last_date = new Date(); last_date.setDate(last_date.getDate() + days); var value = escape(value) + ((days==null) ? "" : "; expires="+last_date.toUTCString()); document.cookie = name + "=" + value + "; path=" + path; // вешаем куки } setCookie("user","Nikola", 2, "/"); // запустим функциию и добавим куки.

Как удалить куки с помощью JS.

Для удаления Cookie необходимо задать ей прошлую дату. Например воспользуемся нашей функцией setCookie(); и удалим нашу куку user;

setCookie("user","Nikola", -2, "/");

Кука удалена, но что делать если нужно удалить все куки какие есть? Для этого напишем новую функцию.

Function deleteCookie() { var del_co = document.cookie.split(";"); while(name = del_co.pop()) { setCookie(name.split("="),"11", -20, "/"); } }

Что такое cookies?

Cookies - это технология, позволяющая сайтам сохранять в браузере небольшую порцию данных (до 4Кбайт).

Обычно эти данные используются на сайте для того, чтобы:

  • "узнать" (идентифицировать) пользователя (эмулировать постоянное соединение с сервером);
  • сохранить информацию о просмотренных страницах или товаров;
  • осуществить простую защиту счётчиков и системы голосования от накрутки;
  • запомнить настройки интерфейса, расположение блоков, товара, добавленного в корзину и много другого.
Как работают cookies

Механизм работы с cookies рассмотрим на следующем примере:

Принцип работы механизма cookies

  • Клиент (веб-браузер) посылает серверу запрос (запрашивает у него страницу). Если в браузере есть cookies, связанные с этим сайтом, то он их посылает серверу в составе этого запроса.
  • Сервер получает запрос от клиента. Если в составе запроса есть куки, то их можно использовать для выполнения некоторой логики на сервере, подготовки пользователю персонализированной страницы или для чего-то другого. После этого отправляем клиенту ответ. В заголовке ответа отправляем веб-браузеру (клиенту) cookies, которые ему нужно будет сохранить.
  • Веб-браузер (клиент) получает ответ от сервера (страницу) и выводит его пользователю. Куки, которые пришли с сервера, браузер сохраняет в своё хранилище.
  • JavaScript - document.cookie

    // получить значения всех cookies страницы var cookies = document.cookie; // выведем куки в консоль браузера console.log(cookies); // выведем с помощью функции alert alert(cookies);

    Данное свойство представляет собой строку и чтобы в ней что-то найти, например, определённую cookie (по ключу), её необходимо разобрать. Для этого нужно написать JavaScript код (например, с использованием регулярных выражений) или воспользоваться специально предназначенного для этого библиотекой js-cookie . Данная библиотека, кроме функции чтения куки, имеет также методы для её установки и удаления.

    Библиотека js-cookie

    js-cookie - библиотека JavaScript, предоставляющая методы для удобной работы с cookies.

    Подключение js-cookie к странице Установка (set) cookie Запись cookie осуществляется с помощью функции set: // name - ключ (имя) куки // value - значение, связанное с ключом name // attributes (необязательный параметр) - атрибуты куки в формате объекта Cookies.set("name", "value"[,attributes]); Установить cookie для всех страниц сайта: Cookies.set("nameCookie", "valueCookie"); // => "nameCookie=valueCookie; path=/" Создать cookie, действительную 30 дней (от текущего момента времени) и видимую любыми страницами сайта: Cookies.set("nameCookie", "valueCookie", { expires: 30 }); // => "nameCookie=valueCookie; path=/; expires=Thu, 13 Apr 2017 13:00:15 GMT" Выполнить запись куки, доступ к которой будет иметь только текущая страница (срок хранения 365 дней): Cookies.set("nameCookie", "valueCookie", { expires: 365, path: "" }); // => "nameCookie=valueCookie; expires=Wed, 14 Mar 2018 13:00:36 GMT" Получение (get) куки Чтение значения cookie осуществляется с помощью метода get: Cookies.get("nameCookie"); // => "valueCookie" Cookies.get("otherCookie"); // => undefined Получить все доступные cookies: Cookies.get(); // => {nameCookie: "valueCookie"} Удаление (remove) cookie Для удаления куки предназначена функция remove: Cookies.remove("nameCookie"); Удаление cookie с указанием атрибута path: Cookies.set("name", "value", { path: "" }); Cookies.remove("name", { path: "/" }); // не получится (не правильный путь) Cookies.remove("name", { path: "" }); // удалится (указан правильный путь)

    Важно! Когда вы удаляете cookie, вы должны указать тот же самый путь и домен, который использовался для установки cookie. Если атрибуты куки в Cookies.remove не указать, то будут браться те, которые заданы по умолчанию в Cookies.defaults (приведён ниже).

    Например, удалим все cookies, имеющие в качастве пути значение "/": path = "/"; var cookies = Cookies.get(); for (var cookie in cookies) { Cookies.remove(cookie, { path: path }); } Установка атрибутов cookies Передача атрибутов при установке куки осуществляется посредством указания их в качестве значения последнего (3) аргумента функции Cookies.set . Cookies.set("name", "value", { expires: 365, path: "/news/", domain: "m.mydomain.ru", secure: true }); // => "name=value; path=/news/; expires=Wed, 14 Mar 2018 12:54:28 GMT; domain=m.mydomain.ru; secure"

    • expires - указывает длительность хранения cookie в браузере. Значение можно задавать как в формате числа (количество дней от текущего момента времени), так и ввиде даты. Если данный параметр не указать, то cookie будет ссесионным, т.е. он удалится после закрытия браузера.

      Например, установим cookie на 30 дней (в качестве формата expires будем использовать дату):

      // функция, возвращающая дату, которая будет через указанное количество дней от текущей function getDateExpires(days) { var date = new Date; date.setDate(date.getDate() + days); return date; } // запись cookie nameCookie=valueCookie Cookies.set("nameCookie", "valueCookie", { expires: getDateExpires(30) }); // => "nameCookie=valueCookie; path=/; expires=Thu, 13 Apr 2017 12:34:13 GMT"

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

      Cookie, которая будет иметь в качестве пути текущее местоположение документа:

      Cookies.set("nameCookie", "valueCookie", { path: "" }); // => "nameCookie=valueCookie"

    • domain - строка, указывающая домен (по умолчанию: текущий), в котором cookie должна быть видна. При этом куки также будут доступны во всех поддоменах этого домена.
    • secure - устанавливает, необходимо ли при передаче cookies использовать безопасный протокол (https). По умолчанию: false (нет не требуется).
    • Кроме индивидуальной установки атрибутов куки при каждом вызове функции Cookies.set , их также можно назначить глобально посредством свойства defaults объекта Cookie . Cookies.defaults = { path: "/", expires: 365 }; Cookies.set("nameCookie", "valueCookie"); // => "nameCookie=valueCookie; path=/; expires=Wed, 14 Mar 2018 12:53:23 GMT" Данные атрибуты будут использоваться функцией Cookies.set по умолчанию. Другими словами только тогда, когда вы вызываете функцию Cookies.set без последнего (третьего) параметра.
    Куки и формат JSON

    Библиотека js-cookie позволяет очень просто установить в качестве значения куки не только текстовое значение, но и данные в формате массива или объекта (а точнее их строковое представление посредством JSON.stringify):

    Cookies.set("name", { name1: "value1", name2: "value2" });

    Выполнять чтение cookie (имеющей в качестве значения JSON) с помощью функции Cookies.get не очень удобно, т.к. на выходе вы получите обычную строку (а не массив или объект).

    Cookies.get("name"); // => "{"name1":"value1","name2":"value2"}" Cookies.get(); // => {name:"{"name1":"value1","name2":"value2"}"}

    Для этого можно воспользоваться функцией Cookies.getJSON . Данная функция не только получает cookie, но и разбирает её с помощью JSON.parse:

    Cookies.getJSON("name"); // => {name1: "value1", name2: "value2"} Cookies.getJSON("name")["name1"]; // => "value1" Cookies.getJSON("name")["name2"]; // => "value2" Cookies.getJSON(); // => {name: {name1:"value1", name2:"value2"}}

    JavaScript дает возможность устанавливать и читать куки в браузере. В данном уроке мы рассмотрим как происходит работа с куками, а также сделаем простую страницу, которая будет помнить введеное имя и отображать его при каждом входе.

    Что такое куки (cookie)?

    Куки - это небольшой объем данных, которые хранятся вэб браузером. Они позволяют Вам сохранять определенную информацию о пользователе и получать ее каждый раз, когда он посещает Вашу страницу. Каждый пользователь имеет свой собственный уникальный набор куков.

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

    Свойство document.cookie .

    В JavaScript куки доступны с помощью свойства cookie объекта document. Создать куки можно следующим образом:

    И получить весь сохраненый набор куков так:

    Var x = document.cookie;

    Давайте рассмотрим сохранение и получение куков более подробно.

    Сохранение куки

    Для сохранения куки нужно присвоить document.cookie текстовую строку, которая содержит свойства куки, которые мы хотим создать:

    document.cookie = " name = значение; expires= дата; path= путь; domain= домен; secure";

    Свойства описаны в таблице:

    Свойство Описание Пример
    name = значение Устанавливает имя куки и его значение. username=Вася
    expires= дата Устанавливает дату истечения срока хранения куки. Дата должна быть представлена в формате, который возвращает метод toGMTString() объекта Date . Если значение expires не задано, куки будет удалено при закрытии браузера. expires=
    13/06/2003 00:00:00
    path= путь Данная опция устанавливает путь на сайте, в рамках которого действует куки. Получить значение куки могут только документы из указанного пути. Обычно данное свойство оставляют пустым, что означает что только документ установивший куки может получит доступ к нему. path=/demo/
    domain= домен Данная опция устанавливает домен, в рамках которого действует куки. Получить значение куки могут только сайты из указанного домена. Обычно данное свойство оставляют пустым, что означает, что только домен установивший куки может получит доступ к нему. domain=сайт
    secure Данная опция указывает браузеру, что для пересылки куки на сервер следует использовать SSL. Очень редко используется. secure

    Давайте посмотрим пример установки куки:

    document.cookie = "username=Вася; expires=15/02/2011 00:00:00";

    Данный код устанавливает куки username , и присваивает ему значение "Вася" , которое будет храниться до 15-го февраля 2011 года (используется Европейский формат времени!).

    var cookie_date = new Date (2003, 01, 15); document.cookie = "username=Вася; expires=" + cookie_date.toGMTString();

    Данный код выполняет точно такое же действие, как и предыдущий пример, но для установки даты используется метод Date.toGMTString() . Учтите, что нумерация месяца в объекте Date начинается с 0, то есть февраль - это 01 .

    Document.cookie = "logged_in=yes";

    Данный код устанавливает куки logged_in , и присваивает ему значение "yes" . Так как атрибут expires не установлен, то куки удалится при закрытии браузера.

    var cookie_date = new Date (); // Текущая дата и время cookie_date.setTime (cookie_date.getTime() - 1); document.cookie = "logged_in=; expires=" + cookie_date.toGMTString();

    Данный код устанавливает куки logged_in и присваивает строку хранения значение времени за одну секунду перед текущим - такая операция приведет к немедленному удалению куки. Ручной способ удалить куки!

    Перекодирование значения куки!

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

    document.cookie = "username=" + escape("Вася Пупкин") + "; expires=15/02/2003 00:00:00"; Функция для установки куки

    Установка куки станет проще, если мы напишем специальную функцию, которая будет выполнять простые операции, такие как перекодирование значений и построение строки document.cookie . Например:

    Function set_cookie (name, value, exp_y, exp_m, exp_d, path, domain, secure) { var cookie_string = name + "=" + escape (value); if (exp_y) { var expires = new Date (exp_y, exp_m, exp_d); cookie_string += "; expires=" + expires.toGMTString(); } if (path) cookie_string += "; path=" + escape (path); if (domain) cookie_string += "; domain=" + escape (domain); if (secure) cookie_string += "; secure"; document.cookie = cookie_string; }

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

    Например, установка куки без срока хранения:

    set_cookie ("username", "Вася Пупкин"); set_cookie ("username", "Вася Пупкин", 2011, 01, 15);

    Установка куки со сроком хранения, доменом сайт , использованием SSL, но без пути:

    set_cookie ("username", "Вася Пупкин", 2003, 01, 15, "", "сайт", "secure"); Функция для удаления куки.

    Другая полезная функция для работы с куки представлена ниже. Функция "удаляет" куки из браузера посредством установки срока хранения на одну секунду раньше текущего значения времени.

    function delete_cookie (cookie_name) { var cookie_date = new Date (); // Текущая дата и время cookie_date.setTime (cookie_date.getTime() - 1); document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString(); }

    Для использования данной функции нужно только передать ей имя удаляемого куки:

    Delete_cookie ("username");

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

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

    Var x = document.cookie;

    Таким образом возвращается строка, которая состоит из списка пар имя/значение, разделенных точкой с запятой для всех куки, которые действуют для текущего документа. Например:

    "username=Вася; password=abc123"

    В данном примере 2 куки, которые были предварительно установлены: username , который имеет значение "Вася" , и password , который имеет значение "abc123" .

    Функция для получения значения куки

    Обычно, нам нужно только значение одного куки за один раз. Поэтому строка куки не удобна для использования! Здесь приводится функция, которая обрабатывает строку document.cookies , возвращет только то куки, которое представляет интерес в конкретный момент:

    Function get_cookie (cookie_name) { var results = document.cookie.match ("(^|;) ?" + cookie_name + "=([^;]*)(;|$)"); if (results) return (unescape (results)); else return null; }

    Данная функция использует регулярное выражение для поиска имени куки, которое представляет интерес, а затем возвращает значение, которое обработано функцией unescape() для перекодирования к нормальному символьному виду. (Если куки не найдено, возвращается значение null.)

    Данная функция проста в использовании. Например, для возврата значения куки username:

    Var x = get_cookie ("username");

    Простой пример использования

    В данном примере мы сделали страницу, которая запрашивает Ваше имя при первом посещении, затем она сохраняет Ваше имя в куки и показывает его при следующих посещениях.

    Откройте страницу в новом окне. При первом посещении она попросит ввести имя и сохранит его в куки. Если Вы посетите страницу еще раз, она отобразит на экране введенное имя из куки.

    Для куки задаем срок хранения в 1 год от текущей даты, это означает, что браузер сохранит Ваше имя даже если Вы закроете его.

    Вы можете посмотреть код страницы в браузере, выбрав функцию просмотра исходного кода. Здесь приводится основная часть кода:

    if (! get_cookie ("username")) { var username = prompt ("Пожалуйста, введите Ваше имя", ""); if (username) { var current_date = new Date; var cookie_year = current_date.getFullYear () + 1; var cookie_month = current_date.getMonth (); var cookie_day = current_date.getDate (); set_cookie ("username", username, cookie_year, cookie_month, cookie_day); } } else { var username = get_cookie ("username"); document.write ("Привет, " + username + ", добро пожаловать на страницу!"); document.write ("
    Forget about me!"); }

    Данный урок показал Вам, как использовать куки в JavaScript для хранения информации о Ваших посетителях. Спасибо за внимание! :)

    Как мы уже говорили, при каждой загрузке страницы и при каждом её обновлении скрипты начинают выполняться заново. С одной стороны - это хорошо, т.к. можно не заботиться о предыдущих состояниях скрипта. Но с другой стороны – иногда надо хранить данные о предшествующих действиях или введённых пользователм данных.

    В JavaScript существует единственный механизм, позволяющий запомнить своё состояние – cookies (в переводе с английского – «печенье»). Откуда взято это название – теперь сказать сложно, но принято считать, что термин cookies появился ещё на заре развития Unix и локальных сетей.

    Cookie – это небольшой текстовый блок, который браузер сохраняет на диск при первой загрузке страницы. При последующих обновлениях страницы cookie будет автоматически послан серверу вместе с GET- или POST-запросом.

    Обычно cookie используются для хранения небольших фрагментов данных, таких как идентификаторы сессии PHP, временные сеансовые ключи, хеши паролей и т.д. Максимальный объём данных, который можно сохранить в одном cookie, составляет 4 Кб, а средний объём cookie обычно не превышает килобайта. Увлекаться хранением данных с cookies не стоит, т.к. они отправляются на сервер при каждом обновлении страницы. Так что если ваша страница «весит» 10 Кб, а в cookie вы сохранили все 4 Кб – то ваш трафик вырастет почти в полтора раза.

    Любой cookie содержит несколько полей с фиксированными именами:

    expires

    Дата и время истечения "срока годности" cookie. По достижении этого времени он больше не будет отсылаться на сервер. Если этот параметр не указан - cookie сохраняется до закрытия браузера. Параметр должен всегда задаваться в формате "День, Число-Ден-ГГГГ ЧЧ:ММ:СС GMT", Например:

    Этот cookie перестанет отсылаться на сервер после 10 часов 10 минут 10 секунд 20 января 2010 года по Гринвичу.

    path

    Путь на сервере, для которого будет использоваться этот cookie. Если вы хотите задать cookie для всего сервера - поставьте "/"

    domain

    Имя домена, для которого действителен данный cookie. Этот параметр действет не только на основной домен, но и все его поддомены

    secure Параметр определяет, надо ли использовать для передачи cookie шифрованное соединение (HTTPS). Если не установлен - используется обычное соединение.

    Кроме фиксированных полей, вы можете задавать свои. Элементы задаются в формате "ИМЯ=ЗНАЧЕНИЕ", например:

    MYNAME=Дядя Вася

    Перед тем, как запросить страницу на сервере, браузер проверяет, есть ли у него уже cookie от данного сервера (поля path и domain). Если есть и их «срок годности» не истёк (поле expires) – отправляет найденные данные серверу. Устаревшие cookie браузер при запросе страницы просто игнорирует.

    Теперь рассмотрим порядок работы с cookies.

    Единственный способ добраться до cookies текущего документа - использовать встроенный объект document.cookies. По сути это строка, содержащая все cookie, один за другим, разделённые точкой с запятой:

    Имя_1=значение_1;имя_2=значение_2;.....

    Новый cookie добавляется обычным присвоением объекту document.cookie нового значения:

    Document.cookie = "myname=deniska";

    Обратите внимание, что при обратной операции вы получите не последний установленный cookie, а ВСЕ cookies, соответствующие данному документу:

    Var list = document.cookie; // list теперь содержит все cookie документа

    Рассмотрим комплексный пример, создадим несколько функций для манипулирования cookies.

    // получение cookie по заданному смещению function GetValue (offset) { var strEnd = document.cookie.indexOf (";", offset); if (strEnd == -1) strEnd = document.cookie.length; return unescape(document.cookie.substring(offset, strEnd)); } //получение cookie по имени function GetCookie(name) { var key = name + "="; var i = 0; while (i < document.cookie.length) { var j = i + key.length; if (document.cookie.substring(i, j) == key) return GetValue (j); i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } return null; } // установка cookie по имени function SetCookie (name, value) { var argv = SetCookie.arguments; var argc = SetCookie.arguments.length; var expires = (argc > 2) ? argv : null; var path = (argc > 3) ? argv : null; var domain = (argc > 4) ? argv : null; var secure = (argc > 5) ? argv : false; document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure"; : ""); } // удаление одного cookie function DeleteCookie(strName) { document.cookie = strName + "=0; expires=" + (new Date(0)).toGMTString(); }

    Теперь рассмотрим пример использования наших функций:

    var userName = GetCookie("username"); if (userName == null) { // пользователь не зарегистрирован userName = "Гость"; } else { // извлекаем текущий адрес страницы pathName = location.pathname; // из адреса получем полное имя домена domain = pathName.substring(0,pathName.lastIndexOf("/")) +"/"; // получаем текущую дату var expDate = new Date (); // устанавливаем "срок годности"cookie на год expDate.setTime(expDate.getTime() + (365 * 24 * 3600 * 1000)); SetCookie("username",userName, expDate, domain); } // выводим имя пользователя на страницу document.write("

    Здравствуйте, " + userName + "

    ");

    Как видите, пользоваться cookie достаточно просто. Главное - правильно формировать соответствующие строки параметров.

    В настоящее время практически все браузеры поддерживают cookies. Некоторые пользователи (примерно 2-4%) принудительно отключают такую поддержку, хотя лично я ничего опасного в cookies не вижу. Максимум, чем могут повредить включенные cookies – злоумышленник сможет узнать ваш логин и пароль почтового ящика, да и то – если вы будете слишком беспечны и начнёте открывать из веб-интерфейса почтовика всякие открытки, шутки и прочие опасные пакости.

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

    // Функция возвращает true, если cookie включены, // в ином случае - false function IsCookieEnabled() { // проверяем существование свойства navigator.cookieEnabled if(typeof(navigator.cookieEnabled) != "undefined") return navigator.cookieEnabled; else { // если свойство navigator.cookieEnabled // не поддерживается, то просто попробуем // установить и получить назад тестовый cookie var tmpCookie = "testCookieForCheck"; SetCookie(tmpCookie, "1"); if(GetCookie(tmpCookie) != null) { DeleteCookie(tmpCookie); return true; } return false; } }

    Сookies дают массу преимуществ. Например, при регистрации на сайтах в форме регистрации обычно есть галочка «запомнить меня». Если вы её не ставите – сервер сохраняет временный cookie, действительный лишь до закрытия браузера. А вот если вы галочку поставили – сервер сохранит cookie с длительным сроком жизни, а значит при следующем заходе на этот сайт вы будете автоматически идентифицированы по ранее сохранённым данным. Аналогичный приём используется на большинстве сайтов. В большинстве браузеров предусмотрена возможность просмотра и управления cookie. Так что вы можете в любой момент зайти и посмотреть кто и что вам сохранял.

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



    Загрузка...