Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Отдельная кука для для отдельного модального окна

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
ilyasret
Отправлено: 28 Декабря, 2013 - 06:32:48
Post Id


Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2012  


Помог: 0 раз(а)




Здравствуйте!
у меня на cms koobie есть функционал показа всплывающих модальных окон, запускаются из админки активацией, проблема в том что если активировать 2 и более модального окна то всегда будет отображаться только одно модальное окно, потому вот этим кодом создается одна общая кука reveal_modal
PHP:
скопировать код в буфер обмена
  1.  
  2. if($users->is_loaded()){
  3.  
  4.         //dynamic mwindows
  5.         $dynamicmw=$db->Query("SELECT * FROM pure_modal_windows WHERE location LIKE '%".mysql_real_escape_string($location)."%' AND active=1 LIMIT 1")->fetchrow();
  6.         if(!$_COOKIE['reveal_modal'])
  7.                 {
  8.                 $tmpl->assign("mw_content",$dynamicmw->content);
  9.                 $tmpl->assign("mw_effect",$dynamicmw->effect); 
  10.                 setcookie("reveal_modal",mktime(),time()+3600*$dynamicmw->show_time);  
  11.                 }
  12. }
  13.  


Если куку удаляю то модальное окно всплывает, закрываю его второе, третье уже не отображается, помоему здесь нужно сделать как-то привязку на каждое модальное окно отдельную куку а не одну на всех, получается что активировал 4 модалки показываться будет последнее по сортировке
 
 Top
KingStar
Отправлено: 28 Декабря, 2013 - 09:42:34
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




все верно думаешь, каждому окну присваивай свой уникальный id и ему присваивай активацию


-----
То что программа работает, не означает что она написана правильно!
 
 Top
ilyasret
Отправлено: 28 Декабря, 2013 - 10:18:21
Post Id


Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2012  


Помог: 0 раз(а)




KingStar

не подскажете в моем коде что изменить?
 
 Top
KingStar
Отправлено: 28 Декабря, 2013 - 10:31:36
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




id и куку можно задать с помощью uniqid

PHP:
скопировать код в буфер обмена
  1. setcookie("reveal_modal", uniqid(), time()+3600*$dynamicmw->show_time);


выбираем запись в таблице по этому uniqid типа

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.      COUNT(*)
  3. FROM
  4.      `pure_modal_windows`
  5. WHERE
  6.      `uniqid`= '".mysql_real_escape_string($_COOKIE['reveal_modal'])."' AND
  7.      `active`=1
  8. LIMIT 1


и далее проверять, если количество записей с соответствующим условием равно 0, то окно не активно, если 1 - активно

для нескольких окон можно в куку занести массив в формате json либо с каким-либо разделителем и explode / implode


-----
То что программа работает, не означает что она написана правильно!
 
 Top
ilyasret
Отправлено: 28 Декабря, 2013 - 11:02:55
Post Id


Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2012  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.     setcookie("reveal_modal", uniqid(), time()+3600*$dynamicmw->show_time);
  2.  
  3.     SELECT
  4.          COUNT(*)
  5.     FROM
  6.          `pure_modal_windows`
  7.     WHERE
  8.          `uniqid`= '".mysql_real_escape_string($_COOKIE['reveal_modal'])."' AND
  9.          `active`=1
  10.     LIMIT 1
  11.  


Это полное решение ?
(Добавление)
В этом запросе ошибка, без него кука создается
PHP:
скопировать код в буфер обмена
  1. $dynamicmw=$db->Query("SELECT COUNT(*) FROM `pure_modal_windows` WHERE `uniqid`= '".mysql_real_escape_string($_COOKIE['reveal_modal'])."' AND `active`=1 LIMIT 1")->fetchrow();

(Добавление)
KingStar
То что вы выложили я позаменял где нужно, перестала кука создаваться, дальше то что вы написали проверку можете помочь написать ?
 
 Top
DeertOff
Отправлено: 28 Декабря, 2013 - 13:23:34
Post Id



Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Июль 2011  


Помог: 3 раз(а)




Куки одинаковые перезаписываются.
uniqid() нужен что бы сгенерировать разные куки.
 
 Top
ilyasret
Отправлено: 28 Декабря, 2013 - 13:37:20
Post Id


Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2012  


Помог: 0 раз(а)




Активировал 3 модальных окна из них один раз в заданный промежуток времени жизни куки покажется последнее окно, например через час я активировал 4-е модальное окно и получается что новая кука не создастся потому что она уже существует и соответственно активированное модальное окно не отобразится, нужно чтобы кука с уникальным именем создавалась для каждого нового активированного через админку модального окна
PHP:
скопировать код в буфер обмена
  1.  
  2. if($users->is_loaded()){
  3.  
  4.         //dynamic mwindows
  5.         $dynamicmw=$db->Query("SELECT * FROM pure_modal_windows WHERE location LIKE '%".mysql_real_escape_string($location)."%' AND active=1 LIMIT 1")->fetchrow();
  6.         if(!$_COOKIE['reveal_modal'])
  7.                 {
  8.                 $tmpl->assign("mw_content",$dynamicmw->content);
  9.                 $tmpl->assign("mw_effect",$dynamicmw->effect); 
  10.                 setcookie("reveal_modal",mktime(),time()+3600*$dynamicmw->show_time);  
  11.                 }
  12.  

Тут в коде даже проверяется кука с одним именем, всегда проверяет одну и ту же куку

Можно как-то сделать чтобы одно модальное окно привязывалось к уникальной куке?
 
 Top
KingStar
Отправлено: 28 Декабря, 2013 - 13:39:30
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




я лиш показал пример, помимо отправки куки, её же и нужно добавить в таблицу, чтобы потом её найти и проверить, активирована она или нет, писать за тебя никто не станет, учи язык


-----
То что программа работает, не означает что она написана правильно!
 
 Top
ilyasret
Отправлено: 28 Декабря, 2013 - 13:49:19
Post Id


Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2012  


Помог: 0 раз(а)




может все таки напишете ? поможете мне?
 
 Top
ilyasret
Отправлено: 29 Декабря, 2013 - 11:52:51
Post Id


Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2012  


Помог: 0 раз(а)




метод is_loaded() как в нем разделить проверку кук if(!$_COOKIE['reveal_modal']),
не совсем представляю вот я активировал еще одно модальное окно, как ей создастся кука если она уже существует?
Если я напишу так if(!$_COOKIE['reveal_modal']) if(!$_COOKIE['reveal_modal2']) то одновременно создадутся две куки reveal_modal reveal_modal2 и обе будут работать только с одним модальным окном
 
 Top
KingStar
Отправлено: 29 Декабря, 2013 - 12:05:51
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




писал выше

KingStar пишет:
для нескольких окон можно в куку занести массив в формате json либо с каким-либо разделителем и explode / implode


-----
То что программа работает, не означает что она написана правильно!
 
 Top
ilyasret
Отправлено: 29 Декабря, 2013 - 13:36:00
Post Id


Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2012  


Помог: 0 раз(а)




KingStar

Не совсем понял как это сделать
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB