<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JSToolbox - все о JavaScript &#187; сессии</title>
	<atom:link href="http://www.jstoolbox.com/category/sessii/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jstoolbox.com</link>
	<description>Блог о программировании вообще и о JavaScript в частности, уроки, статьи, заметки, база знаний.</description>
	<lastBuildDate>Mon, 07 Mar 2011 18:19:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PersistJS &#8211; сессии в JavaScript без cookies</title>
		<link>http://www.jstoolbox.com/2008/05/22/persistjs-sessii-v-javascript-bez-cookies/</link>
		<comments>http://www.jstoolbox.com/2008/05/22/persistjs-sessii-v-javascript-bez-cookies/#comments</comments>
		<pubDate>Thu, 22 May 2008 17:36:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[сессии]]></category>
		<category><![CDATA[скрипты]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[PersistJS]]></category>
		<category><![CDATA[скрипт]]></category>

		<guid isPermaLink="false">http://www.jstoolbox.com/2008/05/22/persistjs-sessii-v-javascript-bez-cookies/</guid>
		<description><![CDATA[В одной из предыдущих статей я написал о скрипте sessvars.js, который позволяет работать с сессиями без cookies, используя свойство window.name. Однако у этого скрипта есть одна большая проблема &#8211; сессии сохраняются только в том случае, если вы открываете ссылки в том же окне. Если же открывать ссылки в новом окне/табе, то данные сессий там будут [...]]]></description>
			<content:encoded><![CDATA[<p>В одной из предыдущих статей я написал о скрипте <a href="http://www.jstoolbox.com/2008/05/15/peremennye-sessij-bez-primeneniya-cookies/">sessvars.js</a>, который позволяет работать с сессиями без cookies, используя свойство <strong>window.name</strong>. Однако у этого скрипта есть одна большая проблема &#8211; сессии сохраняются только в том случае, если вы открываете ссылки в том же окне. Если же открывать ссылки в новом окне/табе, то данные сессий там будут не доступны.</p>
<p>Скрипт, который я вам сегодня представлю &#8211; <a href="http://pablotron.org/?cid=1557">PersistJS</a>, также работает с сессиями, однако в отличии от <strong>sessvars.js</strong> он использует для хранения данных другие &#8220;накопители&#8221;. Суть в том, что многие браузеры имеют механизмы хранения данных на стороне клиента отличные от cookies. Все они намного проще и лучше последних, могут хранить больше данных, и не передаются в HTTP запросах. Однако, каждый браузер реализует эти механизмы по-своему. В данный момент существуют 4 различных решения для хранения данных на стороне клиента:</p>
<ul>
<li>globalStorage: Firefox 2.0+, Internet Explorer 8</li>
<li>localStorage: development WebKit</li>
<li>openDatabase: Safari 3.1+</li>
<li>userdata: Internet Explorer 5.5+</li>
</ul>
<p>Помимо вышеперечисленного, работу с сессиями можно организовать при помощи плагинов <strong>Adobe Flash</strong> и <strong>Google Gears</strong>, однако они также имеют свои проблемы &#8211; Flash может быть отключен или отсутствовать в браузере, а Google Gears пока еще не очень распространен.</p>
<p><a href="http://pablotron.org/?cid=1557">PersistJS</a> способен работать с сессиями исользуя собственный API и автоматически определяя, какую технологию использовать для хранения данных. В данный момент он поддерживает следующие механизмы:</p>
<ul>
<li>Flash 8</li>
<li>Google Gears</li>
<li>localstorage</li>
<li>whatwg_db</li>
<li>globalstorage</li>
<li>UserData (Internet Explorer)</li>
<li>cookie: хранение данных при помощи Cookie.</li>
</ul>
<p>Как видите Cookies также могут использоваться, но только в том случае если другие методы невозможно использовать. Можно также явно запретить использовать Cookies, об этом ниже.</p>
<p>Это пока что первый релиз PersistJS, и протестирован он только на FireFox 2.0, FireFox 3.0rc1, IE7, и Safari 3.1.</p>
<p><span id="more-138"></span></p>
<h4>Примеры</h4>
<p>Создание хранилища данных и сохранение там данных:</p>
<pre class="prettyprint">
// создаем новое хранилище данных
var store = new Persist.Store('My Data Store');

// данные для хранения
var data = "Некая длинная строка ...........";

// сохраняем данные
store.set('saved_data', data);
</pre>
<p>Получение данных:</p>
<pre class="prettyprint">
// получаем данные и показываем их пользователю
store.get('saved_data', function(ok, val) {
  if (ok)
    alert('saved data = ' + val);
});
</pre>
<p>Удаление данных:</p>
<pre class="prettyprint">
store.remove('saved_data');
</pre>
<p>Получение типа хранилища, используемого скриптом для хранения данных:</p>
<pre class="prettyprint">
var info = [
  'Тип: ', Persist.type || 'none',  ', ',
  'Размер: ', (Persist.size < 0) ? 'unknown' : Persist.size
].join('');

alert(info);
</pre>
<p>Явно запрещаем использовать Cookies скриптом:</p>
<pre class="prettyprint">
Persist.remove('cookie');
</pre>
<h4>Использование</h4>
<p>Подключаем скрипт:</p>
<pre class="prettyprint">
&lt;script type='text/javascript' src='persist-min.js'>&lt;/script>
</pre>
<p>После загрузки DOM, создаем хранилище данных:</p>
<pre class="prettyprint">
// глобальный объект для доступа к данным
var store;

window.onload = {
	// создаем хранилище данных "My Application"
	store = new Persist.Store('My Application');
}
</pre>
<p>Имя хранилища данных является обязательным параметром для конструктора. Можно создавать множество таких контейнеров для данных, но все они должны иметь уникальные имена.</p>
<p>Далее добавляем данные, сохраняем как показано в разделе &#8220;Примеры&#8221;.</p>
<p><a href="http://jstoolbox.com/demo/persistjs/test/test_flash.html" class="demo">смотреть демо</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jstoolbox.com/2008/05/22/persistjs-sessii-v-javascript-bez-cookies/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Переменные сессий без применения cookies</title>
		<link>http://www.jstoolbox.com/2008/05/15/peremennye-sessij-bez-primeneniya-cookies/</link>
		<comments>http://www.jstoolbox.com/2008/05/15/peremennye-sessij-bez-primeneniya-cookies/#comments</comments>
		<pubDate>Wed, 14 May 2008 23:25:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[сессии]]></category>
		<category><![CDATA[скрипты]]></category>
		<category><![CDATA[cookies]]></category>
		<category><![CDATA[скрипт]]></category>

		<guid isPermaLink="false">http://www.jstoolbox.com/2008/05/15/peremennye-sessij-bez-primeneniya-cookies/</guid>
		<description><![CDATA[Такой инструмент хранения данных как cookies зачастую избегают из-за многих проблем связанных с их использованием &#8211; ограниченный размер хранимых данных (4 х 20Kb на один домен), хранить можно только строки, и, кроме того все эти данные добавляются в заголовки запросов браузера, что не способствует производительной работе сайта. Решение этой проблеме я нашел вчера &#8211; скрипт [...]]]></description>
			<content:encoded><![CDATA[<p>Такой инструмент хранения данных как cookies зачастую избегают из-за многих проблем связанных с их использованием &#8211; ограниченный размер хранимых данных (4 х 20Kb на один домен), хранить можно только строки, и, кроме того все эти данные добавляются в заголовки запросов браузера, что не способствует производительной работе сайта. Решение этой проблеме я нашел вчера &#8211; скрипт <a href="http://www.thomasfrank.se/sessionvars.html">sessvars.js</a> способен устанавливать и хранить данные сессий при помощи JavaScript и без использования cookies. Вместо cookies используется свойство <strong>window.name</strong>, прелесть которого в том, что оно сохраняет свое значение при перезагрузке страниц и может хранить до 2 мегабайт данных. Также как и в cookies здесь можно хранить только строковые данные. Чтобы обойти это ограничение <strong>sessvars.js</strong> использует преобразователь JSON в строку для сериализации объектных данных.</p>
<p>Скрипт работает во всех основных браузерах: IE 6/7, Firefox 1.5/2/3b5, Safari, Opera 9.</p>
<p><span id="more-132"></span></p>
<h4>Как использовать</h4>
<p>Подключаем скрипт:</p>
<pre class="prettyprint">
&lt;script type="text/javascript" src="sessvars.js">&lt;/script>
</pre>
<p>После этого в нашем распоряжении есть новый объект под названием <strong>sessvars</strong>, к которому, как и к обычному объекту JavaScript можно добавлять данные. Единственное отличие от обычных объектов это то, что это значение сохраняется при перезагрузке страницы. То есть, если мы добавим на одной странице следующее значение:</p>
<pre class="prettyprint">
sessvars.myObj = {name: "Dima", age: 28}
</pre>
<p>то на других страницах сайта оно доступно через <strong>sessvars.myObj</strong>.</p>
<p>Свойствам <strong>sessvars</strong> можно давать любые имена, кроме <strong>$</strong>, которое уже задействовано для нескольких полезных функций:</p>
<ul>
<li><strong>sessvars.$.clearMem()</strong> &#8211; очищает занятую память.</li>
<li><strong>sessvars.$.usedMem()</strong> &#8211; возвращает количество используемой памяти в килобайтах.</li>
<li><strong>sessvars.$.usedMemPercent()</strong> &#8211; количество используемой памяти в процентах.</li>
<li><strong>sessvars.$.debug()</strong> &#8211; показывает окно отладки.</li>
</ul>
<p>Также имеется свойство <strong>sessvars.$.prefs</strong>, которое содержит несколько полезных опций, например свойство <strong>sessvars.$.prefs.memlimit</strong> хранит максимальное количество данных &#8211; по умолчанию 2000 килобайт, однако можно изменять для IE 7, Safari или Opera, которые имеют гораздо больший предел хранения данных.</p>
<p>И последняя очень важная деталь &#8211; <strong>безопасность</strong>. Фактически данные переменной <strong>window.name</strong> могут быть доступны для других скриптов на других доменах, поэтому никогда не храните таким образом секретные данные &#8211; пароли, номера кредиток и др.</p>
<p><a href="/demo/sessions/first.html" class="demo">Демо 1</a><a href="http://www.thomasfrank.se/sessvarsTestPage1.html" class="demo" style="margin-left:18px">Демо 2 (сайт автора)</a><a href="/download/sessions.zip" class="download" style="margin-left:18px">скачать пример</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jstoolbox.com/2008/05/15/peremennye-sessij-bez-primeneniya-cookies/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

