12.12.2012, 18:11
|
Аспирант
|
|
Регистрация: 24.05.2012
Сообщений: 93
|
|
Проблема с кукисами
При нахождении на любой странице сайта через 40 секунд появляется окно подписки. При нажатии кнопки 'закрыть' окно подписки появится только через сутки. При нажатии кнопки подтверждения подписки окно появится только через 9999*9999*9999 мкс
$(document).delay(40000).queue(function() {
if (!getcookie("SUBSCR")) {
$('#subscribeOverlay').fadeIn("slow");
$('#subscribeWindow').fadeIn("slow");
$('#subscribeWindowClose').click(function(){
$('#subscribeOverlay').fadeOut("slow");
$('#subscribeWindow').fadeOut("slow");
setcookie( "SUBSCR", "1" , 3600*24*1000);
});
$('#subscr_submit').click(function(){
$('#subscribeOverlay').fadeOut("slow");
$('#subscribeWindow').fadeOut("slow");
setcookie( "SUBSCR", "2" , 9999*9999*9999);
});
}
});
function setcookie(a,b,c) {if(c){var d = new Date();d.setTime(d.getTime()+c);}if(a && b) document.cookie = a+'='+b+(c ? '; expires='+d.toUTCString() : '');else return false;}
function getcookie(a) {var b = new RegExp(a+'=([^;]){1,}');var c = b.exec(document.cookie);if(c) c = c[0].split('=');else return false;return c[1] ? c[1] : false;}
Но проблема в том, что запись в куки создается для каждой страницы.
Код:
|
Имя: SUBSCR
Содержание: 1
Домен: site.net
Путь: /faq
Отправить: Любой тип соединения
Доступный для скрипта: Да
Создано: среда, 12 декабря 2012 г. 19:34:26
Срок действия истекает: четверг, 13 декабря 2012 г. 19:34:26 |
Код:
|
Имя: SUBSCR
Содержание: 1
Домен: site.net
Путь: /search
Отправить: Любой тип соединения
Доступный для скрипта: Да
Создано: среда, 12 декабря 2012 г. 19:48:20
Срок действия истекает: четверг, 13 декабря 2012 г. 19:48:20 |
При закрытии окна на одной странице на другой она опять вылезает через 40 секунд. При закрытии нового окна добавляется новая запись в куки. Раньше такого не было, создавалась только одна запись в куки для всех страниц сайта, а сейчас не пойму что произошло. Мож я где накосячил?
|
|
12.12.2012, 18:27
|
Интересующийся
|
|
Регистрация: 18.08.2012
Сообщений: 26
|
|
Под отладчиком браузера пробовали смотреть, может быть ошибку покажет?!
|
|
12.12.2012, 18:36
|
Интересующийся
|
|
Регистрация: 18.08.2012
Сообщений: 26
|
|
Сходу просмотрев код, подозрительным кажется строчка
return c[1] ? c[1] : false;
|
|
12.12.2012, 18:39
|
Аспирант
|
|
Регистрация: 24.05.2012
Сообщений: 93
|
|
Ошибок нет. При закрытии окна на главной пишется в куки путь /. Окно больше не появляется на других страницах. Раньше при закрытии окна на любой странице путь был /
|
|
12.12.2012, 18:48
|
Аспирант
|
|
Регистрация: 24.05.2012
Сообщений: 93
|
|
а как прописать путь при добавлении в куки?
|
|
12.12.2012, 18:52
|
Интересующийся
|
|
Регистрация: 18.08.2012
Сообщений: 26
|
|
document.cookie="foo=bar; path=/; expires=Mon, 01-Jan-2001 00:00:00 GMT";
Как то так
|
|
12.12.2012, 18:55
|
Интересующийся
|
|
Регистрация: 18.08.2012
Сообщений: 26
|
|
Где / корневой каталог
|
|
12.12.2012, 18:56
|
Интересующийся
|
|
Регистрация: 18.08.2012
Сообщений: 26
|
|
Цитата:
|
Путь установки
"path=/" — этим параметром задается путь (каталог), для которого действительна кука. Сейчас path имеет значение "/", это ничто иное, как корневой каталог, поэтому кука будет доступна для чтения абсолютно всем каталогам сайта. В случае если доступ к куке должен быть ограничен, то параметр path просто не указываем или указываем в нем общий родительский каталог, и кука будет установлена для конкретного каталога, но специфика такова, что кука будет доступна всем его подкаталогам, в то же время — не видна смежным и родительским каталогам.
Для чего это? Представим элементарную ситуацию: интернет-кафе, сначала пришел пользователь Вася, поработал со своей страницей в соцсети, а после него пришел Петя и, на том же компьютере, в той же сети, поработал со своей страницей. Страницы участников находятся в одном домене, но лежат, как правило, в смежных каталогах. К примеру: страница Васи — http://socset.com/vasya, страница Пети — http://socset.com/petya. Можно представить, какой будет хаос, если куки будут устанавливаться в корневой каталог: Вася сможет оперировать куками Пети и наоборот. Я думаю ни одному, ни другому такой вариант не понравится. Поэтому, в данном случае, будет уместно, если куки будут привязаны только к каталогу конкретного пользователя, следовательно, ко всем его подкаталогам.
|
Взял с сайта:
http://www.xiper.net/learn/javascrip...n-cookies.html
|
|
12.12.2012, 19:17
|
Аспирант
|
|
Регистрация: 24.05.2012
Сообщений: 93
|
|
Спасибо большое, помогло.
function setcookie(a,b,c) {if(c){var d = new Date();d.setTime(d.getTime()+c);}if(a && b) document.cookie = a+'='+b+(c ? '; expires='+d.toUTCString()+'; path=/' : '');else return false;}
Сейчас хоть разобрался в этой функции)
|
|
12.12.2012, 19:30
|
Интересующийся
|
|
Регистрация: 18.08.2012
Сообщений: 26
|
|
JavaScript порой такие потёмки
|
|
|
|