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]   

> Описание: Не могу придумать как написать данный механизм
vanicon
Отправлено: 25 Января, 2011 - 16:05:03
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


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




На сайте есть форма входа и после того как пользователь вводит правильно логин и пароль он заходит в свою админ панельку и запрос к бд для изменение его статуса с "off" на "on" ну и тем самым меняются картинки с красного квадратика на зеленый, но тут и скрыта вся проблема если пользователь когда захочет уйти нажмет на выход то запрос изменит статус с "on" на "off" но если пользователь ни нажмет на кнопку выйти а попросту закроет окно броузера то в бд так и будет "on" а самого пользователя уже нет на сайте. Есть одна задумка что если пользователь не совершал никаких действий в течении 5 минут с момента входа то будем считать что он покинул сайт и запросом в бд поменяем ему статус на "off". Может быть у кого есть более простое решение моей проблемы?


-----
Так было, так есть и так будет
 
 Top
JustUserR
Отправлено: 25 Января, 2011 - 16:15:08
Post Id



Активный участник


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


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




vanicon пишет:
Может быть у кого есть более простое решение моей проблемы?
В качестве возможного варианта позволяющего осуществить определения количества пользователей просматривающих заданную web-страницу допустимо использование технологий интерактивных транспортных элементов типа Iframe/AJAX - такой подход обеспечивает достаточный корректный результат в зависимости от урвоня установленного времени обновления элементов данной системы


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
vanicon
Отправлено: 25 Января, 2011 - 16:33:07
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


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




Прочитал немного про Iframe/AJAX и что это вообще такое:
Этот транспорт - пожалуй, самый универсальный и мощный, но и тонкостей в нем - больше всех

Для общения с сервером создается невидимый IFrame. Простая смена URL этого iframe - запрос к серверу за данными. Кроме того, в iframe можно отправлять post-запросы
поставив его имя в атрибут form.target.
JustUserR Вас не затруднит объяснить как этот механизм должен мне помочь? Я просто пока не понимаю ход Ваших мыслей.


-----
Так было, так есть и так будет
 
 Top
JustUserR
Отправлено: 25 Января, 2011 - 16:51:33
Post Id



Активный участник


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


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




vanicon пишет:
JustUserR Вас не затруднит объяснить как этот механизм должен мне помочь? Я просто пока не понимаю ход Ваших мыслей.
Общая схема предполагаемого решения основывается на осуществлении передачи специализированной информации на web-сервер браузером пользователя производящего просмотр заданной web-страницу - в частности при проведением пользователем чтения объемной статьи общий объект HTML-окна остается фиксированным и определение состояние online не является возможным - однако при использовании интерактивного транспортного элемента возможна подача запроса без перезагрузки базовой страницы включающего текущей состояние данного авторизированного пользователя а также обновление статуса других посетителей


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
vanicon
Отправлено: 25 Января, 2011 - 17:11:36
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


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




Да боюсь эта технология для меня как темный лес, про ajax я знаю он посылает данные на сервер, а сервер в ту очередь отсылает ответ и все это происходит без перезагрузки страницы, ajax'ом пользоваться я научился с помощью библиотеки jquery. Можете сверстать маленький примерчик для меня?


-----
Так было, так есть и так будет
 
 Top
JustUserR
Отправлено: 27 Января, 2011 - 10:21:53
Post Id



Активный участник


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


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




vanicon пишет:
Можете сверстать маленький примерчик для меня?
В качестве полного демонстрационного примера позволяющего осуществить иллюстрацию функционирования данной технологии возможно использование следующей JS-библиотеки позволяющей выполнять целевые интерактивные HTTP-запросы - для данного JS-кода обеспечивается корректное функционирование со всеми браузерами с поддержкой предшествующей обработки элементов и управления потоком кода - то есть всеми современными браузерами кроме firefox которые не обадает полноценной JS-виртуальной машиной
Для целевого использование предназначены функции ifr_seturl и ifr_setdata осуществляющие подачу GET и POST-запросов соответственно - с обеспечением вызова указанной во втором аргументе функции обратного вызова
CODE (javascript):
скопировать код в буфер обмена
  1. window.ld_mode=false
  2. window.ifr_real_init=function()
  3.   {     window.sv_cv_url=window.location.href
  4.         var sc_load=false
  5.         try
  6.           {     var dv_ins=document.createElement("div")
  7.                 dv_ins.id="dvv_conf"
  8.                 var cnt_txt="<div id=\"dvi\"></div>\n"
  9.                 cnt_txt+="<div id=\"dvf\"></div>\n"
  10.                 dv_ins.innerHTML=cnt_txt
  11.                 dv_ins.style.display="none"
  12.                 document.body.appendChild(dv_ins)
  13.                 sc_load=true
  14.                 window.setTimeout("full_load()",120)
  15.           }
  16.         catch(e)  {     sc_load=false   }
  17.         window.err_str=""
  18.         if(!sc_load)  { window.setTimeout("ifr_real_init()",1200)  }
  19.         else
  20.           {     window.ld_mode=true
  21.                 window.ifr_init()
  22.                  
  23.           }
  24.   }
  25. window.setTimeout("ifr_real_init()",120)
  26. window.ifr_init=function()
  27.   {     var ifr_txt="<iframe src=\"about:blank\" style=\"display:none\" name=\"ifr\"  "
  28.         if(navigator.appName=="Microsoft Internet Explorer")
  29.           {     ifr_txt=ifr_txt+"onReadystateChange=\"ifr_preload()\""
  30.           }
  31.         else {}
  32.         ifr_txt=ifr_txt+"onLoad=\"ifr_load()\" "
  33.         ifr_txt=ifr_txt+">\n</iframe>"
  34.         document.all["dvi"].innerHTML=ifr_txt
  35.         window.no_reload=false
  36.         window.err_str=""
  37.   }
  38.  
  39. window.ifr_data=""
  40. window.db_flg=false
  41.  
  42. window.ifr_preload=function()
  43.   {     if(window.db_flg)   { return false  }
  44.         else {}
  45.         try
  46.           {     if(frames["ifr"].location.href=="about:blank")  {return false }
  47.                 else   { var tmp_ifr_data=frames["ifr"].document.body.innerHTML  }
  48.           }
  49.         catch(e)
  50.           {     if(window.ifr_last_url)
  51.               { frames["ifr"].navigate("about:blank")
  52.                         document.all["dvi"].innerHTML=""
  53.                         document.all["dvf"].innerHTML=""
  54.                         window.db_flg=true;
  55.                         if(!e.description)
  56.                           {     window.err_str="Браузер отклонил разрешение на запрос:\n"+window.ifr_last_url
  57.                                 eval(window.ifr_fn+"(false)")
  58.                           }
  59.                         else
  60.                           {     window.err_str=e.description+": \n"+window.ifr_last_url
  61.                                 eval(window.ifr_fn+"(false)")
  62.                           }
  63.                         ifr_init()
  64.                   }
  65.                 else {}
  66.           }
  67.   }
  68.  
  69. window.ifr_load=function()
  70.   {     if(window.db_flg)  { return false  }
  71.         else {}
  72.         try
  73.           {     if(frames["ifr"].location.href=="about:blank")
  74.                   {     return false  }
  75.                 else
  76.                   {     window.ifr_data=frames["ifr"].document.body.innerHTML
  77.                         window.ifr_data=parse_tags(window.ifr_data)
  78.                         try
  79.                           {     eval(window.ifr_fn+"(true)")
  80.                                 window.no_reload=false
  81.                           }
  82.                         catch(e) { }  
  83.                         window.db_flg=true
  84.                         frames["ifr"].location.href="about:blank"
  85.                         window.ifr_fn=""
  86.                         window.ifr_last_url=""
  87.                   }
  88.                 document.all["dvf"].innerHTML=""
  89.           }
  90.         catch(e)
  91.           {     document.all["dvi"].innerHTML=""
  92.                 document.all["dvf"].innerHTML=""
  93.                 if(window.ifr_last_url)
  94.                   {     if(!e.description)
  95.                           {     window.err_str="Браузер отклонил разрешение на запрос:\n"+window.ifr_last_url
  96.                                 eval(window.ifr_fn+"(false)")
  97.                           }
  98.                         else
  99.                           {     window.err_str=e.description+": \n"+window.ifr_last_url
  100.                                 eval(window.ifr_fn+"(false)")
  101.                           }
  102.                         ifr_init()
  103.                   }
  104.                 else {}
  105.                 window.setTimeout("ifr_init()",3)
  106.                 window.ifr_last_url=""
  107.           }
  108.         window.err_str=""
  109.   }
  110. window.ifr_seturl=function(url,fn)
  111.   { if(!ld_mode)  {     return false }
  112.         else {}
  113.         if(!url)  {     url="about:blank" }
  114.         else {}
  115.         if(!fn)  {      fn="void" }
  116.         else {}
  117.         window.ifr_last_url=url
  118.         window.db_flg=false
  119.         frames["ifr"].location.href=url
  120.         window.ifr_fn=fn
  121.         window.no_reload=true
  122.         window.err_str=""
  123.   }
  124.  
  125. window.ifr_setdata=function(url,vdata,fn)
  126.   {     if(!ld_mode) {  return false }
  127.         else {}
  128.         if(!url) {      return false }
  129.         else {}
  130.         if(!fn)  {      fn="void" }
  131.         else {}
  132.         window.ifr_last_url=url
  133.         var frm_txt="<form action=\""+url+"\" method=\"POST\" name=\"vfrm\" "
  134.         frm_txt=frm_txt+"target=\"ifr\" style=\"display:none\">\n"
  135.         for(var k in vdata)
  136.           {     frm_txt=frm_txt+"<input type=\"hidden\" name=\""+k+"\" "
  137.                 frm_txt=frm_txt+"value=\""+vdata[k]+"\">\n"
  138.           }
  139.         frm_txt=frm_txt+"</form>"
  140.         window.ifr_fn=fn
  141.         document.all["dvf"].innerHTML=frm_txt
  142.         window.db_flg=false
  143.         document.forms["vfrm"].submit()
  144.         window.no_reload=true
  145.         window.err_str=""
  146.   }


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB