Вывод пользователей сайта, авторизованных OnLine

Модератор
#
Вывод пользователей сайта, авторизованных OnLine
<?php
$queryBuilder = Core_QueryBuilder::select('*')->from('sessions');
$aRows = $queryBuilder->execute()->asAssoc()->result();

function unserializesession($data)
{
   $vars = preg_split('/([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff^|]*)\|/', $data, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);

   $result = array();
   for ($i=0; isset($vars[$i]); $i++)
   {
      $result[$vars[$i++]] = unserialize($vars[$i]);
   }

   return $result;
}

// Время, в течение которого пользователь должен был быть активен
$iLastActivity = 60 * 60 * 24;

$aSiteusers = array();
foreach ($aRows as $row)
{
   $value = unserializesession($row['value']);

   if (isset($value['siteuser_id']) && $row['time'] > time() - $iLastActivity)
   {
      $aSiteusers[$value['siteuser_id']] = Core_Entity::factory('Siteuser', $value['siteuser_id']);
   }
}

foreach ($aSiteusers as $oSiteuser)
{
   echo '<br />Login: ', $oSiteuser->login;
}
?>

Также есть аналогичный пример для HostCMS 5
#
Re: Вывод пользователей сайта, авторизованных OnLine
Все это отлично работает,только есть одно но. Если пользователь закрыл сайт и  не нажал кнопку выход в личном кабинете,то он находится что он активный(вроде как на сайте), на самом деле  его там нет.
Возможно ли исправить пример который вы привели,у меня HostCMS6
Модератор
#
Re: Вывод пользователей сайта, авторизованных OnLine
а откуда система знает, что он браузер закрыл? ее об этом никто не уведомляет!
В примере есть переменная $iLastActivity, она указывает на выбор пользователей за определенный период активности. Установите ей значение меньше.
#
Re: Вывод пользователей сайта, авторизованных OnLine
Я делаю игровой сайт,если по каким-то причинам закрылся браузер,игрок должен исчезнуть в моем списке активных игроков. Так как его могут вызвать на игру а его на самом деле нет. Так что изменение переменной $iLastActivity мне ничего не даст,я на сайте обновляю активных каждые 4 секунды(буду использовать ваш код а он мне реальную картину не даст).
Вот на этом сайте http://www.bereg.ru/games/club/hall.shtml все работает как я хочу. Закрыл игрок браузер(или комп отключился сам) и он исчез из активных игроков. Я потому и написал что может и у вас так можно сделать.
Модератор
#
Re: Вывод пользователей сайта, авторизованных OnLine
HostCMS писал(а):
а откуда система знает, что он браузер закрыл? ее об этом никто не уведомляет!
Используйте лимит 5 секунд, если у Вас каждые 4 секунды обновляется и всего делов.
#
Re: Вывод пользователей сайта, авторизованных OnLine
Выход вижу только один, чтобы система знала что посетитель закрыл браузер. Это возможно в принципе сделать или нет ?  Если это возможно но трудоемко давайте будем делать это за дополнительную плату или искать какой-то другой способ решения этой проблемы. Я уже в предыдущем сообщении писал что эта проблема решена на сайте http://www.bereg.ru/games/club/hall.shtml , т.е проблема в принципе разрешима.
#
Re: Вывод пользователей сайта, авторизованных OnLine
Undefined offset: 1 на строке с $result[$vars[$i++]] = unserialize($vars[$i]);
#
Re: Вывод пользователей сайта, авторизованных OnLine
Посмотрите здесь:
ARTatom
Авторизация