asker23
Новичок
задача, при нажатии пользователем на любую ссылку открыть в соседнем окне инструкцию, после нажатия на ссылку убрать это событие на 24 часа. Решил задачу так, после клика на ссылку пользователю устанавливается Cookie c сроком дейтсвия 24 часа те при последуюших кликах просто проверяю есть ли данная кука и если есть то попап с инструкцией не активируется. Хранить информацию в бд или файлах не вариант тк инструкция показывается не зарегистрированным пользователям.
Код:
Все работает но только до закрытия браузера, несмотря что срок жизни куки ставлю 24 часа, если закрыть, открыть браузер и заново зайти на сайт, то Cookie уже нет. Проверял под Firefox + firebug. Что странно, что и если с помошью firebug поставить куку с сроком жизни например час, то опять после закрытия/открытия окна браузера, куки не будет.
в чем может быть проблема и как ее исправить ? или кто может предложить вариант решения получше ?
Код:
PHP:
if(!existsCookie('exoclickPopunder')) {
$('a').each(function () {
$(this).bind( 'click', popunderActivator);
});
}
function popunderActivator() {
//set cookie to disable popunder in future
setCookie('exoclickPopunder', '1', TimeAfter(1,0,0), '/', 'mysite.com');
$(this).attr('target', '_blank');
//execute instruction popunder
exoInstructionPop();
$('a').each(function () {
$(this).unbind('click', popunderActivator );
});
}
//set cookie with params
function setCookie(name, value, exp, pth, dmn, sec)
{
document.cookie = name + '=' + escape(value)
+ ((exp)? '; expires=' + exp : '')
+ ((pth)? '; path=' + pth : '')
+ ((dmn)? '; domain=' + dmn : '')
+ ((sec)? '; secure' : '');
}
//get time in correct format to set cookie
function TimeAfter(d,h,m)
{
// return time after d days h hours m minutes
var now = new Date(),
nowMS = now.getTime(), // time in milliseconds
newMS = ((d*24 + h)*60 + m)*60*1000 + nowMS;
now.setTime(newMS); // new time in milliseconds
return now.toGMTString();
}
в чем может быть проблема и как ее исправить ? или кто может предложить вариант решения получше ?