Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать,чтобы cookie удалялась через сутки после создания? (https://javascript.ru/forum/misc/29425-kak-sdelat-chtoby-cookie-udalyalas-cherez-sutki-posle-sozdaniya.html)

bona 27.06.2012 13:47

Как сделать,чтобы cookie удалялась через сутки после создания?
 
Нужно,чтобы cookie удалялась ровно через день после создания. Что нужно присвоить expires для этого?

Deff 27.06.2012 13:50

<!--  = Кукисы = -->
<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>

bona 27.06.2012 14:16

Deff,поясните пожалуйста,для чего нужны параметры a и b,я как-то не совсем поняла. И ещё: если мне просто нужно проверить есть ли кук и в том случае,если есть вывести окно с определенной надписью,а если нет,то задать кук, можно ли опустить функцию getcookie(a)?

Deff 27.06.2012 14:37

setcookie(Name,value,time);
value = getcookie(Name);
Если кука c таким именем нет => getcookie(Name)==false

Удалить кук = setcookie(Name,value,-1);

bona 27.06.2012 15:09

Deff,спасибо.

bona 16.07.2012 23:29

У меня на сайте что-то вроде игры тамагочи,на одной из страниц пользователь вводит код пачки корма и его питомец как бы становится сытым. Мне понадобилось сделать так,чтобы кормить питомца можно было только 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 не исчезает,а когда я попробовала запустить скрипт на своём сайте,а не просто в браузере,то вообще всегда,даже при первом запуске выводится предупреждение о том,что питомец сыт. Подскажите,что нужно исправить,чтобы работало так как надо.

Dim@ 16.07.2012 23:37

bona,
во первых нельзя ставить проверку
if (document.cookie)
ибо возможно существуют другие куки (не Posted == true), а по делу код работает и все нормально тестил удалял куки смотрел дату удаления - все работает

Deff 17.07.2012 00:33

Воть нормальный скрипт
<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)

Dim@ 17.07.2012 00:39

Deff,
блин а как же читабельность? некоторые (я например) хотят разобраться в коде:)

Deff 17.07.2012 00:58

Dim@,
Для читабельности есть более полная версия => http://hostjs-mybb2011.narod.ru/js/C...ary_v_011_4.js

Dim@ 17.07.2012 01:04

Deff,
ээх не понял я :) да ну ладно я свои сетКукие гетКукие ремовеКукие написал:)

Deff 17.07.2012 01:06

Цитата:

Сообщение от Dim@
ээх не понял я

Ну куки кроссбраузерно поддерживают любую кодировку (мон ставить на китайском
Есть еще более продвинутая версия, как то рисовал подфорумы скриптом(без доступа к движку

Dim@ 17.07.2012 01:09

Цитата:

Сообщение от Deff (Сообщение 189409)
Ну куки кроссбраузерно поддерживают любую кодировку (мон ставить на китайском
Есть еще более продвинутая версия, как то рисовал подфорумы скриптом(без доступа к движку

ты это к чему?:blink:

Deff 17.07.2012 01:19

Dim@,
Ну к примеру ти захотел поставить кук
var name="Категория 1",value="Бла - Бла Бла"
Moзилла и Ие пошлет нафег с таким куком

Dim@ 17.07.2012 01:22

Deff,
ну методы escape, unescape спасут меня :)

Deff 17.07.2012 01:32

Dim@,
:) Забей ... просто далее возникают проблемы с ограничением по длине .. прост долго крутился с этим, камней много(а то туть оффтоп разведём

devote 17.07.2012 08:09

Цитата:

Сообщение от Deff
Для читабельности есть более полная версия =>

да особенно копирайт убил, джон резиг там, да еще и Includes Sizzle.js это то там зачем?? или сизл ужат так что я его даже не заметил :D

bona 17.07.2012 10:18

Спасибо. Работало не так действительно из-за неверной проверки на существование. Осталось проверить только одно:удалиться ли cookie завтра.

Dim@ 17.07.2012 10:38

Вложений: 1
bona,
зачем проверять можно просто посмотреть на дату удаления:)

bona 17.07.2012 10:44

Dim@,на этом скрине ничего не видно. Где дату удаления найти?

Dim@ 17.07.2012 10:56

Вложений: 1
bona,
да там не видно - ссори, а вообще это
-> правый клик мыши
-> информация о странице - или Viev page info
-> security
-> "Сохранялись ли куки для сайта - Yes"
-> Посмотреть куки
-> нажать на определенную куку - которая вам нужна
-> "Expires " - дата

Deff 17.07.2012 12:30

Цитата:

Сообщение от devote
да особенно копирайт убил, джон резиг там, да еще и Includes Sizzle.js это то там зачем?? или сизл ужат так что я его даже не заметил

сизл . разжал спецом для читабельности - а копирайт не убрал (*какой то Вы в последнее время нападучий, не отбивайте охоту начинающим - и критиковать можно менее болезненно, вон Дзен в медитацию ушёл

devote 17.07.2012 12:42

Цитата:

Сообщение от Deff
какой то Вы в последнее время нападучий

ну яж смайлик воткнул, развеселило :)

bona 15.02.2013 14:13

У меня появился еще один вопрос насчет 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 есть. В чем проблема?

Deff 15.02.2013 14:33

bona,
Поставьте отлаженный скрипт cookie, пост 8
проверка
var a = getcookie('Posted')
if(a) {alert('cookie существует')}
else alert('cookie не существует')

Выложите обе ссылки (установки и для считывания

bona 15.02.2013 15:03

Deff,
Устанавливается cookie тут:http://zveriki.ucoz.com/index/proverka_skripta/0-95 там будет вначале prompt,введите туда 2517,чтоб установилось. С установкой точно все норм. А считывание вот http://zveriki.ucoz.com/index/skript_test_lt/0-110

Deff 15.02.2013 16:41

bona,
У Вас разные пути,
Тады ставьте расширенный скрипт http://hostjs-mybb2011.narod.ru/js/C...ary_v_011_4.js
и указывайте патч
setCookie01('Posted',true,24*60*60*1000, '/')

bona 15.02.2013 18:03

Deff,
Неужели js не дает возможности с любой страницы проверить наличие любого cookie? Это серьезно усложнит то,что я планировала реализовать. А с расширенным скриптом и патчем будет работать? Патч ведь,если его поставить на страницу,где считывается cookie просто создаст cookie,или я не так поняла?

Deff 15.02.2013 18:13

Цитата:

Сообщение от bona
bona

Просто поставьте расширенный скрипт(по ссылке) подгружаемым файлом, (Ток перезалейте к себе)

ваши Вызовы установки 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) {

bona 16.02.2013 09:58

Deff,
спасибо,теперь все робит.


Часовой пояс GMT +3, время: 07:27.