За последние 24 часа нас посетили 26489 программистов и 1510 роботов. Сейчас ищут 828 программистов ...

Запись в cookies

Тема в разделе "PHP для новичков", создана пользователем Freakmeister, 14 янв 2010.

  1. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    На сайте есть кнопочка, которая прошивает все страницы сайта и служит для скрытия боковых панелей навигации:
    Код (Text):
    1. <a href="javascript:ColumnClose('menusx');MemoPos('MKmenusx', '1');"><img src="$mklib->images/f2.gif" border="0" alt="" /></a>
    Код (Text):
    1. <a href="javascript:ColumnOpen('menudx');MemoPos('MKmenudx', '0')"><img src="$mklib->images/f2.gif" border="0" alt="" /></a>
    Функции в java-скрипте:
    Код (Text):
    1. function ColumnClose(currMenu) {
    2.     Mclose = 'menucloseds';
    3.     Mcontent= 'menucontents';
    4.     if (currMenu == 'menudx') {
    5.             Mclose = 'menuclosedr';
    6.             Mcontent = 'menucontentr';
    7.     }
    8.  
    9.   holder = getObj(currMenu)
    10.   if( holder ){
    11.  
    12.     if (typeof(window.opera) == 'undefined'
    13.         && typeof(holder.getAttribute) != 'undefined') {
    14.         if (holder.getAttribute("className")) {
    15.             holder.setAttribute("className", Mclose);
    16.         } else {
    17.             holder.setAttribute("class", Mclose);
    18.         }
    19.     }
    20.     else {
    21.         holder.setAttribute("class", Mclose);
    22.     }
    23.  
    24.     obj = getObj(Mcontent);
    25.     if(obj) obj.style.display = 'none';
    26.  
    27.     obj = getObj(Mclose);
    28.     if(obj) obj.style.display = '';
    29.   }
    30. }
    Код (Text):
    1.  
    2. function ColumnOpen(currMenu) {
    3.     Mclose = 'menucloseds';
    4.     Mcontent= 'menucontents';
    5.     if (currMenu == 'menudx') {
    6.             Mclose = 'menuclosedr';
    7.             Mcontent = 'menucontentr';
    8.     }
    9.   holder = getObj(currMenu)
    10.   if( holder ){
    11.  
    12.  
    13.     if (typeof(window.opera) == 'undefined'
    14.         && typeof(holder.getAttribute) != 'undefined') {
    15.         if (holder.getAttribute("className")) {
    16.             holder.setAttribute("className", currMenu);
    17.         } else {
    18.             holder.setAttribute("class", currMenu);
    19.         }
    20.     }
    21.     else {
    22.         holder.setAttribute("class", currMenu);
    23.     }
    24.  
    25.  
    26.     obj = getObj(Mcontent);
    27.     if(obj) obj.style.display = '';
    28.  
    29.     obj = getObj(Mclose);
    30.     if(obj) obj.style.display = 'none';
    31.   }
    32. }
    Как сделать, чтобы состояние панели - свёрнуто или развёрнуто, сохранялось в кукис? С кукисами ещё ни разу не работал, помогите плз.
     
  2. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
  3. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Сложноватый мануал. =\ Джава-скрипты и кукисы мне пока в новинку.
    Допустим, я добавил в первый скрипт:
    Код (Text):
    1. setCookie("rscolumn", "0");
    во второй:
    Код (Text):
    1. setCookie("rscolumn", "1");
    И соответссна функцию для записи:
    Код (Text):
    1. function setCookie (name, value, expires, path, domain, secure) {
    2.       document.cookie = name + "=" + escape(value) +
    3.         ((expires) ? "; expires=" + expires : "") +
    4.         ((path) ? "; path=" + path : "") +
    5.         ((domain) ? "; domain=" + domain : "") +
    6.         ((secure) ? "; secure" : "");
    7. }
    Проверил, всё работает, кукисы записываются. Нагуглил такую проверку кукиса:
    Код (Text):
    1. function getCookie(name) {
    2.     var cookie = " " + document.cookie;
    3.     var search = " " + name + "=";
    4.     var setStr = null;
    5.     var offset = 0;
    6.     var end = 0;
    7.     if (cookie.length > 0) {
    8.         offset = cookie.indexOf(search);
    9.         if (offset != -1) {
    10.             offset += search.length;
    11.             end = cookie.indexOf(";", offset)
    12.             if (end == -1) {
    13.                 end = cookie.length;
    14.             }
    15.             setStr = unescape(cookie.substring(offset, end));
    16.         }
    17.     }
    18.     return(setStr);
    19. }
    Теперь непонятно, как подключить этот java-скрипт в функцию вывода блока на php. Сейчас я получаю:
    при попытке сделать проверку if (GetCookie("rscolumn") == 1) {
     
  4. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
  5. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Советчики.) Куки можно читать в PHP без подключения джава-скрипта, как оказалось:
    if ($_COOKIE["rscolumn"] == '0') {
     
  6. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Freakmeister
    гениально. А теперь сравни свой ответ с своим же вопросом.
     
  7. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Говорю же, не сталкивался раньше с кукис.) Запись в кукис получилась, а прочитать никак. Думал, что для чтения кукис нужен джаваскрипт... почему-то.) Что нагуглил, от того и отталкивался собссна.) Сорре есичо.