Javascript.RU

cookies - как быстренько испечь пирожки на javascript в стиле php

Вот я написал код пекарни
Свежие и всегда тепленькие пирожки на яваскрипте

Код модуля

<script type="text/javascript">

var cooker = {
	set: function(cookie_name, cookie_value, cookie_expires, cookie_path, cookie_domain, cookie_secure) {
		if(cookie_name!==undefined) {
			cookie_expires=cookie_expires || 0;
			var expire_date = new Date;
			expire_date.setTime(expire_date.getTime() + (cookie_expires*1000));
			document.cookie = cookie_name + "=" + escape(cookie_value)+'; ' + 
			((cookie_expires === undefined) ? '' : 'expires=' + expire_date.toGMTString()+'; ') +
			((cookie_path === undefined) ? 'path=/;' : 'path='+cookie_path+'; ') +
			((cookie_domain === undefined) ? '' : 'domain='+cookie_domain+'; ') +
			((cookie_secure === true) ? 'secure; ' : '');
		}
	},
	get: function(cookie_name) {
		var cookie = document.cookie, length = cookie.length;
		if(length) {
			var cookie_start = cookie.indexOf(cookie_name + '=');
			if(cookie_start != -1) {
				var cookie_end = cookie.indexOf(';', cookie_start);
				if(cookie_end == -1) {
					cookie_end = length;
				}
				cookie_start += cookie_name.length + 1;
				return unescape(cookie.substring(cookie_start, cookie_end));
			}
		}
	},
	erase: function(cookie_name) {
		cooker.set(cookie_name, '', -1);
	},
	test: function() {
		cooker.set('test_cookie', 'test', 10);
		var work = (cooker.get('test_cookie') === 'test') ? true : false;
		cooker.erase('test_cookie');
		return work;
	}
};
</script>

Печем пирожки

cooker.set('name', 'value', 60); //устанавливаю кукисы с именем name, значением value на 60 секунд

можно печь с большим количеством параметров

cooker.set('name', 'value', 60, '/', 'javascript.ru');

или так

cooker.set('name', 'value', 60, '/', 'javascript.ru', true);

получение параметра из cookie

var cookie_value;
cookie_value = cooker.get('name');
alert(cookie_value);

можно упростить

alert(cooker.get('name'));

Выкидываем пирожки

cooker.erase('name');

проверка включены ли в браузере cookie

var cookie_test;
cookie_test = cooker.test();
if(cookie_test) {
alert('Все нормально, в вашем браузере кукисы работают');
}
else {
alert('Плохо, в вашем браузоре кукисы отключены');
}
+2

Автор: prototype, дата: 25 июля, 2011 - 21:45
#permalink

Вот описание при большом количестве параметров при установки кукисов

Имя
Произвольное имя параметра, определенного в cookie. Здесь вы можете использовать любую строку, лишь бы в ней не было пробелов, запятых и двоеточий. В том случае, когда имя должно содержать перечисленные выше символы, используйте кодировку URL

Значение
Текстовая строка значений параметров. В этой строке не должно быть пробелов, запятых и двоеточий, поэтому вы должны использовать для нее кодировку URL

expires
Дата автоматического удаления cookie по Гринвичу. Если эта дата не указана, а параметр expires отсутствует, cookie будет удалено сразу после того, как браузер закончит сеанс связи с сервером Web

path
Часть адреса URL, задающая путь к документу HTML, для которой действует данный cookie. Если этот параметр не указан, то по умолчанию используется адрес URL документа HTML, где был установлен cookie

domain
Доменная часть адреса URL, для которой действует данный cookie. Если этот параметр не указан, то по умолчанию используется доменный адрес URL документа HTML, где был установлен cookie

secure
Если указано это поле, данные cookie необходимо предавать только с использованием защищенного протокола SSL. Такой протокол используется серверами HTTPS


Автор: aliv128, дата: 27 июля, 2011 - 14:34
#permalink

что такое кодировка URL в первом абзаце описания?


Автор: prototype, дата: 27 июля, 2011 - 20:30
#permalink

%EF%F0%E8%E2%E5%F2
нужно закодировать чтобы не было запрещенных символов в имене
но чтобы не париться просто нужно использовать английские сиволы например ololo_ololo


Автор: I-zone, дата: 28 июля, 2011 - 22:37
#permalink

А почему пирожки? Печеньки же
И лучше наверное escape не использовать, слишком уж он массивный, а у нас всего 4к для хранения. Лучше уж encodeURIComponent и W3C на его стороне ))


Автор: prototype, дата: 29 июля, 2011 - 20:11
#permalink

если со старыми версиями IE совместим то можно
ведь тут дело какое, IE 6 и более старые все еще находятся в использовании, а кукисы это не шутки


Автор: I-zone, дата: 30 июля, 2011 - 19:57
#permalink

Ну чтож, IE поддерживает encodeURIComponent аж с версии 5.5 ну а более ранние версии смысла поддерживать не имеет, IE 4 процентов 80+ современных страниц даже открыть не сможет, а на каждой пятой будет падать с ошибкой. Единицы на земном шаре его пользователей осталось наверное


Автор: Riim, дата: 28 августа, 2011 - 15:35
#permalink

>>> и W3C на его стороне

можешь ссылку дать?


Автор: Гость (не зарегистрирован), дата: 30 июля, 2011 - 14:37
#permalink

слава тебе автор!!!!


Автор: melky, дата: 20 августа, 2011 - 08:28
#permalink
var work = (cooker.get('test_cookie') === 'test') ? true : false;

немного странный код :О

смотри. какая тут разница ?

var a = 1;

alert( [a===1, a===1 ? true : false ].join("\n") )

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

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
11 + 0 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Другие записи этого автора
prototype
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Популярные таги
Последние комментарии
Последние темы на форуме
Forum