![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Се ля ви |
|
||||||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 5 Всего: 127 |
В закреплённой теме про Cookies много по технологии, но мало о понимании того, как следует работать с куками.
Что такое - кука? По сути это - строчка вида "имя=значение" плюс срок жизни и адрес с доменом привязки (ну и ещё можно флажок "secure" поставить, но это уже детали). Свойство "document.cookie" возвращает строку. Просто одну строку. Т.е. служебные заголовки имеют специальное значение, а в остальном подобны тем же парам "имя=значение" (это: "expires", "path", "domain" и "secure" - последний, правда, значения не имеет). Вот и функция, которую любезно переработал Sardar:
Легко понять, что она написана для одной единственной куки. А если мы захотим поставить несколько разных куков? Пока срок жизни и привязка у всех из них совпадают, всё ещё более или менее нормально - мы просто перечисляем их, а потом идёт служебная информация, общая для всех:
Ну, или более логичный вариант:
Но что, если мы хотим поместить куки с разной служебной информацией? Например, если одну пару ключ-значение я хочу поместить клиенту на месяц, а другую - на год, как мне это сделать? Или путь поставить более общий для одной куки и частный - для другой, что бы одна была доступна везде в домене, а вторая - только на страницах данного подраздела? Это сообщение отредактировал(а) Се ля ви - 8.5.2007, 15:07 -------------------- |
||||||
|
|||||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Ну это не просто детали, флажок запрещает отсылать куку если соединение не секурное (секурное например через SSL(https)). Просто задавай по одной паре значений за раз с собственными параметрами. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| vasac |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 13 Всего: 36 |
В большинстве случаев куки ставятся на весь сайт. Отсюда, кстати, у многих новичков, которые не задумываются над параметром path бывают проблемы. Имхо, лучше по умолчанию сделать path=/
|
|||
|
||||
| Се ля ви |
|
||||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 5 Всего: 127 |
За раз - т.е. на каждую загрузку страницы? Да, параметры по-умолчанию надо бы подработать. Например, так:
-------------------- |
||||
|
|||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Не понял... судя по первому посту ты хочешь поставить более одной куки с разными параметрами. Тогда просто ставь их скриптом в одной загрузке страницы вызывая setCookie несколько раз, задавая для каждой куки свои параметры. Или ты имел в виду что то другое? -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 5 Всего: 127 |
Именно это. Хочешь сказать, что свойство document.cookie от этого не затрётся, а все значения будут напластовываться друг на друга? Т.е. мы присваиванием
-------------------- |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Да. document.cookie вещь интересная, возвращает список всех кук, а при записи добавляет куки. Удалить куку можно только заново её поставив с пустым значением или вытекшем временем. Повторить такое для своих объектов можно только в мозиллоподобных, т.к. поддерживаются не ECMA стандатные __defineGetter__ и __defineSetter__. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 5 Всего: 127 |
Интересно... Ну хорошо - а как document.cookie тогда возвращает несколько кук с разными параметрами - у него после каждой пары "имя=значение" перечисляются все служебные данные для неё? -------------------- |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Нет. С точки зрения броузеров - это пары ИМЯ=ЗНАЧЕНИЕ, разделенные ; Служебные данные imho, не извлечь.
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 5 Всего: 127 |
Мда... достаточно в коммандной строке браузера набрать "javascript:alert(document.cookie);" и получим подтверждение - там выдаются только исключительно информативные пары... Может, есть какие-то специальные средства расширения у конкретных браузеров, которые выдают JavaScript`у эту информацию? -------------------- |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |