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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
span4ez
Отправлено: 19 Ноября, 2010 - 14:48:20
Post Id



Гость


Покинул форум
Сообщений всего: 90
Дата рег-ции: Нояб. 2010  
Откуда: Рязань, Россия


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




Я наверно вас уже заел... Улыбка


Но нужна ваша помощь ... не как не пойму как можно определить сколько народу онлайн и их имена(ники)... чтобы выводились.

спасибо за понимание...
 
 Top
SAD
Отправлено: 19 Ноября, 2010 - 15:01:01
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




А загуглить не пробовали? или поиск по сайту?
 
 Top
Viper
Отправлено: 19 Ноября, 2010 - 15:03:09
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




Исходя из того что никаких исходных данных вы не предоставили, соответственно наша организация "КлубЪ "Первый ТелепатЪ" отвечает в наших лучших традициях.

Предполагается что для каждого юзера есть учетная запись в некой метафизической системе. При совершении юзером акта входа в эту систему есть несколько способов отслеживания где он сейчас глумится над системой.
1. Отслеживание по кукам, в которые предварительно система сохраняет некие данные.
2. Отслеживание по последней активности, которая храниться либо в БД либо опять же в печенюшках.
3. Периодические запросы от юзера к некоему сервису системы для отслеживания местоположения лика юзера на небосводе нашей метафизической системы.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
span4ez
Отправлено: 19 Ноября, 2010 - 16:03:19
Post Id



Гость


Покинул форум
Сообщений всего: 90
Дата рег-ции: Нояб. 2010  
Откуда: Рязань, Россия


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




Я хочу сделать так пока юзер активен по сессии в БД будет 1 и по этим 1отслеживать кто онлайн а кто нет....


Вопрос только стал в тупик как сделать так когда сессия закрывается не при нажатии на кнопку ВЫХОД а когда он закрывает браузер...
 
 Top
OrmaJever Модератор
Отправлено: 19 Ноября, 2010 - 16:12:45
Post Id



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


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


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




span4ez пишет:
как сделать так когда сессия закрывается не при нажатии на кнопку ВЫХОД а когда он закрывает браузер...

в php.ini есть значение (по дефолту вроде 24 минуты) после которого сесия умирает. Тоесть пользователь не обновляет страницу за это время или закрывает браузер то сессия удаляется.
параметр в php.ini вроде
session.gc_maxlifetime


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
span4ez
Отправлено: 19 Ноября, 2010 - 16:18:00
Post Id



Гость


Покинул форум
Сообщений всего: 90
Дата рег-ции: Нояб. 2010  
Откуда: Рязань, Россия


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




Это получается если даже он просто закроет браузер PHP сделает выход за него??

И если это так то мне париться ненадо насчет закрытия браузера?
 
 Top
Viper
Отправлено: 19 Ноября, 2010 - 16:25:19
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




span4ez грубо говоря да. но учтите что точность счетчика будет равна "текущие юзеры + (отвалившиеся - session.gc_maxlifetime)"


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
HotBird
Отправлено: 19 Ноября, 2010 - 16:26:01
Post Id



Гость


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


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




span4ez пишет:
а когда он закрывает браузер...

с помощью аякс запроса при событии "закрытие окна"

(Отредактировано автором: 19 Ноября, 2010 - 16:26:49)



-----
Человек, сделавший синтаксический анализатор PHP на одном регулярном выражении, займет достойное место среди гениев.
Качественный хостинг по доступной цене
 
 Top
span4ez
Отправлено: 19 Ноября, 2010 - 16:29:50
Post Id



Гость


Покинул форум
Сообщений всего: 90
Дата рег-ции: Нояб. 2010  
Откуда: Рязань, Россия


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




HotBird пишет:

с помощью аякс запроса при событии "закрытие окна"


Хорошая идея...
(Добавление)
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $db = mysql_connect('localhost', 'root', '');
  3. mysql_select_db('table', $db);
  4. $online = 0;
  5. if (isset($_SESSION['login']))
  6.         {              
  7.                 $query = mysql_query("SELECT * FROM users WHERE login='".$_SESSION['login']."'",$db);
  8.                 mysql_query("UPDATE users SET onl ='1' WHERE login= '".$_SESSION['login']."'",$db);
  9.                 $sum = mysql_query("SELECT * FROM users",$db);
  10.                 $sumrow = mysql_fetch_array($sum);
  11.         }
  12.        
  13.         $sum = mysql_query("SELECT * FROM users",$db);
  14.         $sumrow = mysql_fetch_array($sum);
  15.         do
  16.                         {
  17.                                 if ($sumrow['onl'] == 1)
  18.                                 {
  19.                                         $online = $online + 1;
  20.                                 }
  21.                         }
  22.         while ($sumrow = mysql_fetch_array($sum));     
  23. ?>
  24. <html>
  25. <head>
  26. <title>Главная</title>
  27. <link href="style/style.css" type="text/css" rel="stylesheet">
  28. <script type="text/javascript" src="js/script.js"></script>
  29. </head>
  30. <body>
  31.                 <div class='content'>
  32.                        
  33.                         <table cellpadding='5' cellspacing='5' align='center'>
  34.                         <tr><th colspan='2'>Онлайн:</th></tr>
  35.                         <tr><td>Всего:</td><td><? echo $online; ?></td></tr>
  36.                         <tr><th colspan='2'>Кто:</th></tr>
  37.                         <tr><th colspan='2'>
  38.                         <?
  39.                                 $sum = mysql_query("SELECT * FROM users",$db);
  40.                                 $sumrow = mysql_fetch_array($sum);
  41.                                 do
  42.                                                 {
  43.                                                         if ($sumrow['onl'] == 1)
  44.                                                         {
  45.                                                                 echo $sumrow['nickname']." ";
  46.                                                         }
  47.                                                 }
  48.                                 while ($sumrow = mysql_fetch_array($sum));
  49.                         ?>
  50.                         </th></tr>
  51.                         </table>
  52.                        
  53.                 </div>
  54.                
  55.                
  56.                
  57.                
  58. </body>
  59. </html>          



Вот код как мне сделать при закрытие браузера чтобы в таблице USER по СЕССИИ ONL становился 0....

Про обработчик событий на опере не пашет... Нахмурился Нахмурился

Предложите что нить...

(Отредактировано автором: 19 Ноября, 2010 - 17:03:56)

 
 Top
HotBird
Отправлено: 19 Ноября, 2010 - 18:00:45
Post Id



Гость


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


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




span4ez пишет:
Предложите что нить...

Пишите на джаваскрипте функцию с аякс запросом к отдельному пхп скрипту который изменяет поле ONL на 0 для переданого ему логина. Аякс постом или гетом отправит этому скрипту логин для которого надо изменить статус онлайн.
В теге <body> добавляете onUnload="ваша_функция"
(Добавление)
И ещё, думаю лучше будет если вот это:
PHP:
скопировать код в буфер обмена
  1.        $sum = mysql_query("SELECT * FROM users",$db);
  2.         $sumrow = mysql_fetch_array($sum);
  3.         do
  4.                         {
  5.                                 if ($sumrow['onl'] == 1)
  6.                                 {
  7.                                         $online = $online + 1;
  8.                                 }
  9.                         }
  10.         while ($sumrow = mysql_fetch_array($sum));

заменить на вот это:
PHP:
скопировать код в буфер обмена
  1. $sum = mysql_query("SELECT onl FROM users WHERE onl=1",$db);
  2.         $online = mysql_num_rows($sum);


-----
Человек, сделавший синтаксический анализатор PHP на одном регулярном выражении, займет достойное место среди гениев.
Качественный хостинг по доступной цене
 
 Top
Мелкий Супермодератор
Отправлено: 19 Ноября, 2010 - 18:33:59
Post Id



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


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


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




HotBird пишет:
И ещё, думаю лучше будет если вот это:

А ещё лучше сразу:
PHP:
скопировать код в буфер обмена
  1. $ant = mysql_fetch_assoc(mysql_query("SELECT count(onl) as onl FROM users WHERE onl=1"));
  2. $online = $ant['onl'];

(Отредактировано автором: 19 Ноября, 2010 - 18:34:26)



-----
PostgreSQL DBA
 
 Top
DeepVarvar Супермодератор
Отправлено: 20 Ноября, 2010 - 09:58:48
Post Id



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


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


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




У меня вот такая штука есть, в принципе ее можно заточить и под ники если добавить в табличку поле, или делать подзапросы для получения ника:
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE `online` (
  2.                 `id` INT(6) AUTO_INCREMENT UNIQUE NOT NULL,
  3.                 `ip` CHAR(15),
  4.                 `time` DATETIME NOT NULL,
  5.                 INDEX ( `ip` )
  6.                 )
  7.         ENGINE = MYISAM ;

PHP:
скопировать код в буфер обмена
  1.         public function online() {
  2.                 global $db;
  3.                 $ip = getenv('HTTP_X_FORWARDED_FOR');
  4.                 if (empty($ip) || $ip == 'unknown') { $ip = getenv('REMOTE_ADDR'); }
  5.                 if (preg_match("#(^[0-9.:]{7,15}$)#",$ip)) {
  6.                         $db->update('DELETE FROM `online` WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(`time`) > 300');
  7.                         $return = $db->query('SELECT `ip` FROM `online` WHERE `ip` = "'.$ip.'" LIMIT 1');
  8.                         if (!isset($return[0]['empty'])) $db->update('UPDATE `online` SET `time` = NOW() WHERE `ip` = "'.$ip.'" LIMIT 1');
  9.                         else { $db->update('INSERT INTO `online` (`ip`,`time`) VALUES ("'.$ip.'",NOW())'); }
  10.                         $return = $db->query('SELECT COUNT(*) FROM `online`');
  11.                         return $return[0]['COUNT(*)'];
  12.                         }
  13.                 }
 
 Top
JustUserR
Отправлено: 20 Ноября, 2010 - 18:29:47
Post Id



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


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


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




span4ez Оптимальным вариантом для осуществления проверки количества пользователей ресурса находящихся в режиме online является использование следующей схемы - для каждой из существующих инстнаций статической HTML-страницы обеспечивается обращение к web-серверу - с использованием фиксированного интервала обращения и идентификатора текущей сессии - что в общем случае может быть реализовано при отключенном JS-скрипинге посредством использования Iframe-элемента с Refresh-параметром


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
span4ez
Отправлено: 22 Ноября, 2010 - 12:46:23
Post Id



Гость


Покинул форум
Сообщений всего: 90
Дата рег-ции: Нояб. 2010  
Откуда: Рязань, Россия


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




JustUserR пишет:
e является использование следующей схемы - для каждой из существующих инстнаций статической HTML-страницы обеспечивается обращение к web-серверу - с использованием фиксированного интервала обращения и идентификатора текущей сессии - что в общем случае может быть реализовано при отключенном JS-скрипинге посредством использования Iframe-элемента с Refresh-параметром


не до понял что тут имеете ввиду... пример кода если можно напишите пожалуйста Улыбка
 
 Top
Phantik
Отправлено: 22 Ноября, 2010 - 13:00:24
Post Id


Посетитель


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


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




Клиентский JavaScript по таймеру (раз в n секунд) отправляет запрос серверу, о том что клиент в онлайне. Сервер получает эту информацию и неким образом у себя фиксирует.
Вариантов реализации много. При закрытии окна(вкладки) браузера. Сервер перестает получать сигналы от пользователя и делает соответствующие выводы о статусе пользователя.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB