Как сделать,чтобы cookie удалялась через сутки после создания?
Нужно,чтобы cookie удалялась ровно через день после создания. Что нужно присвоить expires для этого?
|
<!-- = Кукисы = --> <script type="text/javascript"> 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;} setcookie('Posted',true,24*60*60*1000) //Кук на сутки </script> |
Deff,поясните пожалуйста,для чего нужны параметры a и b,я как-то не совсем поняла. И ещё: если мне просто нужно проверить есть ли кук и в том случае,если есть вывести окно с определенной надписью,а если нет,то задать кук, можно ли опустить функцию getcookie(a)?
|
setcookie(Name,value,time);
value = getcookie(Name); Если кука c таким именем нет => getcookie(Name)==false Удалить кук = setcookie(Name,value,-1); |
Deff,спасибо.
|
У меня на сайте что-то вроде игры тамагочи,на одной из страниц пользователь вводит код пачки корма и его питомец как бы становится сытым. Мне понадобилось сделать так,чтобы кормить питомца можно было только 1 раз в день и я решила использовать cookie. В том случае,если cookie есть выводится предупреждение о том,что питомец сыт,иначе происходит процедура кормления. Я соединила свой скрипт со скриптом,который мне дал Deff. Получилось следующее:
<script type="text/javascript"> 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;} if(document.cookie){ alert('Ваш питомец уже сыт.Повторное кормление понадобится завтра.'); } else{ var korm=prompt('Напишите уникальный код пачки корма',''); if( (korm=='2517') || (korm=='0026') || (korm=='4375') || (korm=='0516') || (korm=='1394') || (korm=='1615') ){ alert('Ваш питомец успешно накормлен'); setcookie('Posted',true,24*60*60*1000);} else if( (korm=='6784') || (korm=='1234') || (korm=='0102') ){ alert('Ваш питомец успешно накормлен. Ваша пачка закончилась,приобретите следующую в магазине') setcookie('Posted',true,24*60*60*1000);} else{ alert('Код неверен. Кормление не удалось')} } </script> Однако работает скрипт совершенно некорректно:через сутки cookie не исчезает,а когда я попробовала запустить скрипт на своём сайте,а не просто в браузере,то вообще всегда,даже при первом запуске выводится предупреждение о том,что питомец сыт. Подскажите,что нужно исправить,чтобы работало так как надо. |
bona,
во первых нельзя ставить проверку if (document.cookie)ибо возможно существуют другие куки (не Posted == true), а по делу код работает и все нормально тестил удалял куки смотрел дату удаления - все работает |
Воть нормальный скрипт
<script type="text/javascript"> 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;} </script> Куки на сутки setcookie(a,b,1*3600*24*1000) Проверить существование if(getcookie('Name')) Удалить setcookie(a,b,-1) |
Deff,
блин а как же читабельность? некоторые (я например) хотят разобраться в коде:) |
Dim@,
Для читабельности есть более полная версия => http://hostjs-mybb2011.narod.ru/js/C...ary_v_011_4.js |
Deff,
ээх не понял я :) да ну ладно я свои сетКукие гетКукие ремовеКукие написал:) |
Цитата:
Есть еще более продвинутая версия, как то рисовал подфорумы скриптом(без доступа к движку |
Цитата:
|
Dim@,
Ну к примеру ти захотел поставить кук var name="Категория 1",value="Бла - Бла Бла" Moзилла и Ие пошлет нафег с таким куком |
Deff,
ну методы escape, unescape спасут меня :) |
Dim@,
:) Забей ... просто далее возникают проблемы с ограничением по длине .. прост долго крутился с этим, камней много(а то туть оффтоп разведём |
Цитата:
|
Спасибо. Работало не так действительно из-за неверной проверки на существование. Осталось проверить только одно:удалиться ли cookie завтра.
|
Вложений: 1
bona,
зачем проверять можно просто посмотреть на дату удаления:) |
Dim@,на этом скрине ничего не видно. Где дату удаления найти?
|
Вложений: 1
bona,
да там не видно - ссори, а вообще это -> правый клик мыши -> информация о странице - или Viev page info -> security -> "Сохранялись ли куки для сайта - Yes" -> Посмотреть куки -> нажать на определенную куку - которая вам нужна -> "Expires " - дата |
Цитата:
|
Цитата:
|
У меня появился еще один вопрос насчет cookie. Необходимо проверить cookie на существование,но сделать это надо уже не на той странице и не в том скрипте,где cookie создавалось. Я пробовала так:
<script type="text/javascript"> 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;} if(getcookie('Posted')){ alert('cookie существует'); } else alert('cookie не существует') </script> При запуске выдает,что cookie не существует,но в браузере cookie есть. В чем проблема? |
bona,
Поставьте отлаженный скрипт cookie, пост 8 проверка var a = getcookie('Posted') if(a) {alert('cookie существует')} else alert('cookie не существует') Выложите обе ссылки (установки и для считывания |
Deff,
Устанавливается cookie тут:http://zveriki.ucoz.com/index/proverka_skripta/0-95 там будет вначале prompt,введите туда 2517,чтоб установилось. С установкой точно все норм. А считывание вот http://zveriki.ucoz.com/index/skript_test_lt/0-110 |
bona,
У Вас разные пути, Тады ставьте расширенный скрипт http://hostjs-mybb2011.narod.ru/js/C...ary_v_011_4.js и указывайте патч setCookie01('Posted',true,24*60*60*1000, '/') |
Deff,
Неужели js не дает возможности с любой страницы проверить наличие любого cookie? Это серьезно усложнит то,что я планировала реализовать. А с расширенным скриптом и патчем будет работать? Патч ведь,если его поставить на страницу,где считывается cookie просто создаст cookie,или я не так поняла? |
Цитата:
ваши Вызовы установки setсookie('Posted',true,24*60*60*1000) замените на setCookie01('Posted',true,24*60*60*1000, '/') Ну и чтение тоже getCookie01('Posted') Патч это атрибут в куках function setCookie01(name, value, expires, path, domain, secure) { |
Deff,
спасибо,теперь все робит. |
Часовой пояс GMT +3, время: 07:27. |