07.02.2014, 03:40
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
<div id="show" style="display:none">Привет вновь Вошедшим!</div>
<script type="text/javascript">
function setcOOkie(a,b,c) {if(c){var d = new Date();d.setDate(d.getDate()+c);}if(a && b) document.cookie = a+'='+ encodeURIComponent(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] ? decodeURIComponent(c[1]) : false;}
var test = getcOOkie('show');
if(!test){
alert("Куки нет, - Открываю div");
setcOOkie('show',1) ;
document.getElementById('show').style.display="block";
}
</script>
Последний раз редактировалось Deff, 07.02.2014 в 03:48.
|
|
07.02.2014, 09:00
|
Интересующийся
|
|
Регистрация: 07.09.2013
Сообщений: 22
|
|
Вы предложили отличные решения! Решил сначала попробовать классический метод работы с куками:
function lastVisit(){
function setcOOkie(a,b,c) {
if(c){
var d = new Date();
d.setDate(d.getDate()+c);
var path = '7day-7kg.net';
console.log(path);
}
if(a && b) document.cookie = a+'='+ (encodeURIComponent(b)).replace('', path) +(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] ? decodeURIComponent(c[1]) : false;
}
var test = getcOOkie('show');
if(!test){
console.log("Куки нет, - Открываю div");
setcOOkie('show',1) ;
setTimeout(function() {
jQuery('#popUp').stop();
jQuery('#popUp').fadeIn(600);
}, 3000);
}
else{
console.log("Куки уже есть, - div не отрываю");
}
}
lastVisit();
Следует отметить, что комментарии отсутствуют. На форумах почему - то все как - то поверхностно описывается. Толком так и не разобрался как работать с куками.
Отсюда: Не знал куда грамотна подсунуть путь к кукам (path=/), поэтому подсунул путь уже так сказать на ходу, через переменную.
Как и обещал - делюсь ссылкой Через несколько секунд автоматически появиться приветственное сообщение с фотографией девушки. Повторно оно появиться уже после сброса куки.
Последний раз редактировалось cccp.world, 07.02.2014 в 09:22.
|
|
07.02.2014, 09:08
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Похоже path отсутствует. Куки будут писаться на каждую страницу.
|
|
07.02.2014, 09:15
|
Интересующийся
|
|
Регистрация: 07.09.2013
Сообщений: 22
|
|
Замечания и правки приветствуются!
|
|
07.02.2014, 09:49
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Я о чудесной функции без переносов строк писал выше.
Сообщение от cccp.world
|
На форумах почему - то все как - то поверхностно описывается.
|
Потому что подробно описано в мануале, например в самом попсовом:
http://www.w3schools.com/js/js_cookies.asp
|
|
07.02.2014, 10:08
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
OFF. Капец, оказывается js.split() тупо выкидывает что нарезал за борт сверх лимита.
var cols = rows[i].split('=', 2);
ожидал в элементе 0 левую часть, в элементе 1 - правую. Х на нэ.
|
|
07.02.2014, 16:31
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от kostyanet
|
Похоже path отсутствует. Куки будут писаться на каждую страницу.
|
Добавил
<div id="show" style="display:none">Привет вновь Вошедшим!</div>
<script type="text/javascript">
function setcOOkie(a,b,c) {if(c){var d = new Date();d.setDate(d.getDate()+c);}if(a && b) document.cookie = a+'='+ encodeURIComponent(b) +';path=/'+(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] ? decodeURIComponent(c[1]) : false;}
var test = getcOOkie('show');
if(!test){
alert("Куки нет, - Открываю div");
setcOOkie('show',1) ;
document.getElementById('show').style.display="block";
}
</script>
|
|
07.02.2014, 19:46
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Начал и понял что мне это нафиг не надо, на сервере в стопицот раз проще все сделать. В общем вот такое начало.
var cookie = function() {
return {
'name':null,
'value':null,
'domain':'.'+location.hostname.replace('www.',''),
'path':'/',
'expires': function(days) {
if(this.value) {
var expire=function(days) {
days = days || 30;
var d = new Date();
d.setTime(d.getTime()+(days*24*60*60*1000));
return d.toGMTString();
};
var res=[];
res.push(this.name+'='+this.value);
res.push('domain='+this.domain);
res.push('path='+this.path);
res.push('expires='+expire(days));
res = res.join(';');
}
else
var res = this.name+'=; expires=Thu, 01 Jan 1970 00:00:00 GMT';
console.log(res);
// document.cookie=res;
}
};
};
var c = new cookie();
c.name = 'user';
c.value='Vasya';
c.expires(7); // записали
c.name = 'user';
c.value=null;
c.expires(); // удалили
Чтение подразумевалось в массив, то есть кеширование, потом новый кук туда же и все такое.
|
|
07.02.2014, 20:09
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от kostyanet
|
и понял что мне это нафиг не надо, на сервере в стопицот раз проще все сделать.
|
Кто бы спорил... но есть ли смысл для пользовательской фичи, которая могет быть и временной ?
На серве просто вставить блок с уникальным id при начала сессии, мон в скрытом виде, а далее пусть скрипт думает, что туда добавить-отнять и открывать блок -аль нет
|
|
08.02.2014, 09:31
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Нет, тут другая плоскость. Скажем в куки валятся ид продуктов. Что с ними потом делать? Пихать в where in( --- тут стопицот идех )? А вот если сразу в бд под dummy юзером, то как два пальца: left join orders on blah-blah and user_id = $_SESSION['user_id'] и все остальное тогда работает: и сортировка и фильтрация.
Дело в том что в теме написано про "сессию", а она на сервере, а сервер и без ДжейЭс нажарит печенек и сам их зохавает.
|
|
|
|