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


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