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('Плохо, в вашем браузоре кукисы отключены');
}
|
Вот описание при большом количестве параметров при установки кукисов
Имя
Произвольное имя параметра, определенного в 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
что такое кодировка URL в первом абзаце описания?
%EF%F0%E8%E2%E5%F2
нужно закодировать чтобы не было запрещенных символов в имене
но чтобы не париться просто нужно использовать английские сиволы например ololo_ololo
А почему пирожки? Печеньки же
И лучше наверное escape не использовать, слишком уж он массивный, а у нас всего 4к для хранения. Лучше уж encodeURIComponent и W3C на его стороне ))
если со старыми версиями IE совместим то можно
ведь тут дело какое, IE 6 и более старые все еще находятся в использовании, а кукисы это не шутки
Ну чтож, IE поддерживает encodeURIComponent аж с версии 5.5 ну а более ранние версии смысла поддерживать не имеет, IE 4 процентов 80+ современных страниц даже открыть не сможет, а на каждой пятой будет падать с ошибкой. Единицы на земном шаре его пользователей осталось наверное
>>> и W3C на его стороне
можешь ссылку дать?
слава тебе автор!!!!
немного странный код :О
смотри. какая тут разница ?
Отправить комментарий
Приветствуются комментарии:Для остальных вопросов и обсуждений есть форум.