Переменные сессии без cookies. sessvars.js

sessvars.js - Небольшой JavaScript код, который позволяет хранить и использовать переменные сессии, возможность хранить до 2 Мбайт данных, которые удивительно легко записывать и считывать

Переменные сессии без cookies. sessvars.js

» » Сообщение:

Небольшой JavaScript код, который позволяет хранить и использовать переменные сессии без использования cookies. Он дает возможность хранить до 2 Мбайт данных (несоизмеримо больше допустимого объема cookies), которые удивительно легко записывать и считывать.

Достаточно добавить файл sessvars.js (6 Кб) в секцию HEAD веб-страницы до скриптов, которые будут затем с ним работать:

Код: Выделить всё Развернуть
<head>
<script type="text/javascript" src="sessionvars.js"></script>
...
</head>

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

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

Код: Выделить всё Развернуть
sessvars.myObj = {name: "Thomas", age: 35}

на одной веб-странице - вы сможете получить доступ к объекту sessvars.myObj на всех других страницах, по которым пользователь перемещается во время одной сессии.

Методы Sessionvars

Еднственное свойство sessvars, в которое не следует вмешиваться это $, потому что в нем хранятся несколько полезных методов.
Код: Выделить всё Развернуть
sessvars.$.clearMem()

- Очищает память sessvars.

Код: Выделить всё Развернуть
sessvars.$.usedMem()

- Возвращает количество памяти, используемой sessvars в килобайтах.

Код: Выделить всё Развернуть
sessvars.$.usedMemPercent()

- Возвращает количество памяти, используемой sessvars в процентах от доступной.

Код: Выделить всё Развернуть
sessvars.$.debug()

- Выводит окно отладчика вверху веб-страницы.

Код: Выделить всё Развернуть
sessvars.$.flush()

- Явно сохраняет текущее состояние sessvars перед переходом на другие страницы.
Это редко требуется, потому что сохранение происходит автоматически при возникновении сообытия unload.

Настройки Sessionvars

Несколько различных флагов, регулирующих поведение sessvars, которые можно установить:

Код: Выделить всё Развернуть
sessvars.$.prefs.memlimit

[2000 {по умолчанию}]

Сколько килобайт данных, вы можете хранить в sessvars.
По умолчанию: 2000 килобайт, потому что Опера 9,25 поддерживает чуть больше этого. IE7.0, Firefox 1.5/2.0 и Safari 3,0 позволяют больше - 10 MB не является проблемой для этих браузеров.

Код: Выделить всё Развернуть
sessvars.$.prefs.autoFlush

[true {по умолчанию} /false]

Включает/выключает автоматическое сохранение (см. методы).

Код: Выделить всё Развернуть
sessvars.$.prefs.crossDomain

[true/false {по умолчанию} ]

Если этот флаг установлен, содержимое sessvars можно читать на разных доменах (если оба сайта используют sessvars.js).

Код: Выделить всё Развернуть
sessvars.$.prefs.includeFunctions

[true/false {по умолчанию} ]

Разрешает передачу функций, сохраненных в sessvars.

Код: Выделить всё Развернуть
sessvars.$.prefs.includeProtos

[true/false {по умолчанию} ]

Если этот флаг установлен true, sessvars сохраняет свойства установленные прототипам различных типов данных/объектов между страницами. Редко требуется.

Каким образом хранятся данные в Sessionvars?

Принципы, лежащие в основе sessvars.js на самом деле довольно просты:

С помощью JavaScript вы можете устанавливать свойство window.name, которое используется при обозначении окон и фреймов для обращения к ним из скриптов.

Замечательная особенность window.name заключается в том, что это свойство сохраняется при перемещении по страницам (даже по разным доменам) и может хранить очень длинное значение.
Недостаток в том, что это значение может быть только строкой.
Чтобы обойти это, используется JSON stringifier для сериализации/де-сериализации объекта данных, таким образом, появляется возможность упаковки/распаковки передаваемого содержимого.

Обработчик события window unload избавляет от необходимости ручного пересохранения передаваемых данных при каждом изменении содержимого sessvars.

Соображения безопасности.

Флаг crossDomain по умолчанию выключен, однако это означает лишь то, что вы не испортите содержимое вашего sessvars в window.name на других сайтах по ошибке.
Фактические данные, которые вы указали будут доступны для просмотра и для других скриптов на других доменах, а также их можно увидеть, если набрать javascript alert(window.name) в адресной строке браузера.

Поэтому не следует хранить секретную информацию в sessvars, например, пароли, номера кредитных карт и т.п.

Но в некоторых аспектах sessvars.js безопаснее, чем cookies: cодержимое window.name не отправляется на сервер в заголовке запроса, как это происходит с содержимым cookie, поэтому оно не может быть перехвачено.

Вложения
Зарегистрируйтесь, чтобы скачать вложения.
session, variables, without cookies, window.name, javascript, json stringifier, json, stringifier, window, unload, crossdomain, cookies



Похожие темыКомментарии ПросмотрыПоследнее сообщение
0402Шаблонные переменные в phpBB. Кратк...
Сообщение от: Admin
2954Продолжение: модификация вида списк...
Сообщение от: Admin
0339Истек период сессии. Обновить/продл...
Сообщение от: Admin
0446Переменные в JavaScript
Сообщение от: Admin
0582Как увеличить время жизни сессии в ...
Сообщение от: Admin