X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )

 
Тема закрытаНачать новую тему
> Помогите с куками...
Jon
сообщение 2009-11-18, 13:19
Сообщение #1
Любитель
Иконка группы

Группа: Бета-тестеры
Сообщений: 282
Регистрация: 2009-07-12
Из: Москва

Репутация:   нет  
Всего: 0


Блоки на аяксе, открываются онкликом.
Хочу привязать к ним куки...

Запускается меню так: (php фаил)
<div id=\"menu\" style=\"border: 0px; padding: 0px; margin: 0px;\" style='cursor: pointer;' onclick='GetMenu();'>Открыть панель</div>

И как этот "GetMenu()" при вызове заставить записывать кукис что он открыт, и в следущий раз он открывался сам?
Так же и наоборот функцией GetMenuClose(); или просто обнулением предыдущих кук.
Желательно максимально просто.....
Спасибо...
Перейти в начало страницы
+Цитировать сообщение
termit
сообщение 2009-11-18, 13:45
Сообщение #2
Опытный
Иконка группы

Группа: Бета-тестеры
Сообщений: 705
Регистрация: 2009-06-02
Из: Житомир

Репутация:   нет  
Всего: 11


Ява скрипт
пишем єто:
function getCookieVal (offset) {
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}

Достаём печенье
function GetCookie (name) {
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) 
break; 
}
return null;
}


Ставим печенье
function SetCookie (name, value) {
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (2 < argc) ? argv[2] : null;
var path = (3 < argc) ? argv[3] : null;
var domain = (4 < argc) ? argv[4] : null;
var secure = (5 < argc) ? argv[5] : false;
document.cookie = name + "=" + escape (value) +
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain=" + domain)) +
((secure == true) ? "; secure" : "");
}


Убираем куки
function ResetCookie() {
var expdate = new Date();
expdate.setTime(expdate.getTime() + (24 * 60 * 60 * 1000 * 365)); 
visit = 0;
SetCookie("visit", visit, expdate , "/", null, false);
history.go(0);
}
Перейти в начало страницы
+Цитировать сообщение
Jon
сообщение 2009-11-18, 14:42
Сообщение #3
Любитель
Иконка группы

Группа: Бета-тестеры
Сообщений: 282
Регистрация: 2009-07-12
Из: Москва

Репутация:   нет  
Всего: 0


Так, отлично. Есть основа... Только слишком сложная наверное...
Буду внедрять по очереди...

И так, сама функция вызова блока: (Оригинал) (подгружается, но не запускается)
function GetMenu() { 
document.getElementById(&#39;menu&#39;).innerHTML+="<center><img src=&#39;images/load.gif&#39; alt=&#39;loading...&#39;/></center>"; 
JsHttpRequest.query( &#39;/ajax.php&#39;, { &#39;event&#39;: &#39;menu&#39; }, function(result, errors) { 
document.getElementById(&#39;menu&#39;).innerHTML=result["answer"]; }, true ); }


Вызывается ссылкой <div id=\"menu\" onclick='GetMenu();'>Открыть панель</div>



Внедряем ту хрень:
Как я понял, нужно запустить функцию кук, а она уже распределяет врубать GetMenu(); или нет...
тупо не трогая в корень явы
function getCookieVal (offset) {
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}


Далее эээм.... Вот с "достаём печенье и втулить его в функцию уже запутался....


Пропущу, пока

Ставим печенье, блин, еще хуже...



Удаляем куку. Вызывацо будет как <div id=\"menu\" onclick='GetMenuClose();'>Не открывать панель автоматически</div>


function GetMenuClose() {
var expdate = new Date();
expdate.setTime(expdate.getTime() + (24 * 60 * 60 * 1000 * 365)); 
visit = 0;
SetCookie("visit", visit, expdate , "/", null, false);
history.go(0);
отображаем фразу, блок больше сам не вылезет и ссылка... (как втулить?)
}
и то сделал не до конца..... ХЕЛП ! )



Блин... сложно как то....
А нельзя на php это реализовать?

Сообщение отредактировал Jon - 2009-11-18, 14:47
Перейти в начало страницы
+Цитировать сообщение
Jon
сообщение 2009-11-18, 15:07
Сообщение #4
Любитель
Иконка группы

Группа: Бета-тестеры
Сообщений: 282
Регистрация: 2009-07-12
Из: Москва

Репутация:   нет  
Всего: 0


Код блока


<?
//проверка, есть ли кук, что блок открывался
if (!isset($_COOKIE[&#39;menu&#39;]))
{
echo = "<div id=\"menu\" onclick=&#39;GetMenu();&#39;>Открыть панель</div>"; \\ кука нету, поэтому предложим открыть блок
}
echo = "<script>GetMenu();</script>"; //Запускался, и поэтому запустим еще раз
?>


В подгружаемом коде идёт запись куки

{
setcookie(&#39;menu&#39;,&#39;Блок открывался&#39;,time()+900); // добавляем в куку по поводу открытия блока
}


Еще надо придумать как удалить кук...
Добавить функцию удаления....
<?php
SetCookie("Menu","");
?>
но так, просто обнуляется значение, кука теоретически остаётся ... че делать?

Сообщение отредактировал Jon - 2009-11-18, 15:38
Перейти в начало страницы
+Цитировать сообщение
termit
сообщение 2009-11-18, 15:40
Сообщение #5
Опытный
Иконка группы

Группа: Бета-тестеры
Сообщений: 705
Регистрация: 2009-06-02
Из: Житомир

Репутация:   нет  
Всего: 11


Ладно, перейдём на пхп, действительно проще, чото я затупил...
<?php setcookie("menu_status" , "1 ");  ?> // 1 - открыто


далее в месте менюшки пишем
<?php 
if (isset ($_COOKIE [&#39;menu_status&#39;])) 
{ 
echo &#39;КОД БЛОКА&#39;; 
} 
else 
{ 
echo &#39;Закрытый блок&#39;; 
} 
?>



Удаляем так
setcookie ("menu_status", "");



Хотя твой вариант тоже неплохой...

Сообщение отредактировал termit - 2009-11-18, 15:42
Одобрили: Jon
Перейти в начало страницы
+Цитировать сообщение
Jon
сообщение 2009-11-18, 15:45
Сообщение #6
Любитель
Иконка группы

Группа: Бета-тестеры
Сообщений: 282
Регистрация: 2009-07-12
Из: Москва

Репутация:   нет  
Всего: 0


А так будет пахать?

Код блока

<?
//проверка, есть ли кук, что блок открывался
if (!isset($_COOKIE[&#39;menu&#39;]))
{
echo = "<div id=\"menu\" onclick=&#39;GetMenu();&#39;>Открыть панель</div>"; \\ кука нету, поэтому предложим открыть блок
}
else echo $_COOKIE[&#39;mycook&#39;]; //Запускался, и поэтому прочтём код запуска с куков
?>


В подгружаемом коде идёт запись куки
{
setcookie(&#39;menu&#39;,&#39;<script>GetMenu();</script>&#39;,time()+900); // добавляем в куку по поводу открытия блока
}


Функция удаления кукиса:
{
setcookie(&#39;menu&#39;,&#39;<div id=\"menu\" onclick=&#39;GetMenu();&#39;>Открыть панель</div>&#39;,time()+900); // добавляем в куку с кодом открытия блока
}
Перейти в начало страницы
+Цитировать сообщение
termit
сообщение 2009-11-18, 15:49
Сообщение #7
Опытный
Иконка группы

Группа: Бета-тестеры
Сообщений: 705
Регистрация: 2009-06-02
Из: Житомир

Репутация:   нет  
Всего: 11


Должно пахать... пробуйте...
Перейти в начало страницы
+Цитировать сообщение
Jon
сообщение 2009-11-18, 17:07
Сообщение #8
Любитель
Иконка группы

Группа: Бета-тестеры
Сообщений: 282
Регистрация: 2009-07-12
Из: Москва

Репутация:   нет  
Всего: 0


Всё пашет! )
Только способ где "1" или "нечего" мне показался лучше.
Спасибо!
Перейти в начало страницы
+Цитировать сообщение

Тема закрытаНачать новую тему
0 чел. читают эту тему (гостей: 0, скрытых пользователей: 0)
Пользователей: 0

 
RSS Текстовая версия 0.0415 сек.    11 запросов    GZIP включен    Сейчас: 2020-02-16, 22:45