690
 

Переменные сессий без применения cookies

Такой инструмент хранения данных как cookies зачастую избегают из-за многих проблем связанных с их использованием – ограниченный размер хранимых данных (4 х 20Kb на один домен), хранить можно только строки, и, кроме того все эти данные добавляются в заголовки запросов браузера, что не способствует производительной работе сайта. Решение этой проблеме я нашел вчера – скрипт sessvars.js способен устанавливать и хранить данные сессий при помощи JavaScript и без использования cookies. Вместо cookies используется свойство window.name, прелесть которого в том, что оно сохраняет свое значение при перезагрузке страниц и может хранить до 2 мегабайт данных. Также как и в cookies здесь можно хранить только строковые данные. Чтобы обойти это ограничение sessvars.js использует преобразователь JSON в строку для сериализации объектных данных.

Скрипт работает во всех основных браузерах: IE 6/7, Firefox 1.5/2/3b5, Safari, Opera 9.

Как использовать

Подключаем скрипт:

<script type="text/javascript" src="sessvars.js"></script>

После этого в нашем распоряжении есть новый объект под названием sessvars, к которому, как и к обычному объекту JavaScript можно добавлять данные. Единственное отличие от обычных объектов это то, что это значение сохраняется при перезагрузке страницы. То есть, если мы добавим на одной странице следующее значение:

sessvars.myObj = {name: "Dima", age: 28}

то на других страницах сайта оно доступно через sessvars.myObj.

Свойствам sessvars можно давать любые имена, кроме $, которое уже задействовано для нескольких полезных функций:

  • sessvars.$.clearMem() – очищает занятую память.
  • sessvars.$.usedMem() – возвращает количество используемой памяти в килобайтах.
  • sessvars.$.usedMemPercent() – количество используемой памяти в процентах.
  • sessvars.$.debug() – показывает окно отладки.

Также имеется свойство sessvars.$.prefs, которое содержит несколько полезных опций, например свойство sessvars.$.prefs.memlimit хранит максимальное количество данных – по умолчанию 2000 килобайт, однако можно изменять для IE 7, Safari или Opera, которые имеют гораздо больший предел хранения данных.

И последняя очень важная деталь – безопасность. Фактически данные переменной window.name могут быть доступны для других скриптов на других доменах, поэтому никогда не храните таким образом секретные данные – пароли, номера кредиток и др.

Демо 1Демо 2 (сайт автора)скачать пример

Добавить в закладки:
Maklay.com - Большой каталог товаров для спорта и активного отдыха

Комментарии на “Переменные сессий без применения cookies”

  1. так и делаю
    была такая статья на форуме

  2. Все ничего, но что будет если юзер откроет следующую страницу в новом окне или табе? ;)

  3. увы, ничего не будет – новая страница, новые данные ))
    автор обещал поработать над этим

  4. [...] cookiesВ одной из предыдущих статей я написал о скрипте sessvars.js, который позволяет работать с сессиями без cookies, [...]

  5. [...] Это достоинство уже получило применение в скрипте sessvars.js, который используется для реализации механизма [...]

  6. Мне интересно, можно ли реализовать с помощью этой функции, передавать данные о том сколько пользователь провел времени на сайте.

  7. Думаю, что можно. Правда в этом случае нужно определять активность пользователя, и все равно данные на сервер нужно отправлять аяксом. Не очень то удобно.

  8. Да, я могу вытащить сохранённое значение, но только на другой странице сайта, а как получить это значение на той же странице, на которой я его определил? Прикол в том, что когда я обновляю страницу на которой предварительно задал этому объекту значение оно почему-то недоступно…

  9. Это скорее всего баг в самом скрипте.

Оставить комментарий

JSToolbox создан на основе WordPress