Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Голосование

    Какую CMS Вы предпочитаете

    AtomX
    Fapos CMS
    Drunya CMS
Последние комментарии
Топ пользователей
Drunya
Репутация: 110
Сообщений: 3527
Сашка_из_Шебекино
Репутация: 87
Сообщений: 1803
boriska
Репутация: 65
Сообщений: 846
ARMI
Репутация: 46
Сообщений: 1858
BAH0
Репутация: 26
Сообщений: 544
И так, сразу определимся что наш счетчик будет уметь и делать. В этой статье я решил написать ту часть, которая не совсем то и счетчик(о нем я напишу в следующий раз), а скорее скрипт, показывающий кто онлайн. Скрипт будет показывать сколько гостей и сколько пользователей, прошедших авторизацию онлайн.

Так как мы не можем вести контроль в режиме реального времени, нам надо определится в течении какого времени счетчик будет считать пользователя онлайн. Я взял 10 минут...

 1 
 2 
<?php $time_on_line 10;?>

теперь надо подумать о том куда мы будем писать временную информацию. Можно было бы использовать базы данных, но для такой задачи это по меньшей мере не разумно. По-этому мы будем писать в файл. Допустим наш файл для счетчика пользователей онлайн будет называться online.da.
 1 
 2 
<?php $path 'online.da';?>

Теперь код с подробными комментами
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
<?php $time_on_line 10;
                
$path 'online.da';
               
//два массива, для гостей и пользователей
      
$users = array();
      
$guests = array();
                
//если файл уже создан, читаем с него инфу
      
if (file_exists($path) && is_readable($path)) {
                        
//инфа хранится в сериализованном виде(таким образом можно превратить масив в строку)
         
$data unserialize(file_get_contents($path));
                       
//теперь мы присваиваем объявленным нами выше массивам данные из файла
         
$users = (!empty($data['users'])) ? $data['users'] : array();
         
$guests = (!empty($data['guests'])) ? $data['guests'] : array();
      }
               
//следующие два цикла удаляют из списка онлайн тех кто отсуцтвовал более 10мин.
              //поясню: данные у нас хранятся в массивах, где ключ это ID пользователя или IP гостя, а значение это время до которого он будет считаться онлайн
      
foreach ($users as $key => $user) {
         if (
$user time()) unset($users[$key]);
      }
      foreach (
$guests as $key => $guest) {
         if (
$guest time()) unset($guests[$key]);
      }
               
//это типо авторизованный юзер
      
if (!empty($_SESSION['user']['id'])) {
         
$users[$_SESSION['user']['id']] = time() + $time_on_line 60);
      } else {
                        
//а это гость. $_SERVER['REMOTE_ADDR'] содержит IP адрес
         
$guests[$_SERVER['REMOTE_ADDR']] = time() +  $time_on_line 60);
      }
                
//теперь сериализуем(превращаем в строку) данные и сохраняем
      
file_put_contents($pathserialize(array('users' => $users'guests' => $guests)));?>

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

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
<?php $path 'online.dat';
   
$users 0;
   
$quests 0;
        
//проверяем есть ли и доступен ли файл счетчика
   
if (file_exists($path) && is_readable($path)) {
                
//десериализуем. После этого данные будут в виде массива
      
$data unserialize(file_get_contents($path));
                
//считаем количество гостей и юзеров и присваиваем значения переменным
      
$users count($data['users']);
      
$quests count($data['guests']);
      
   }
   
//теперь переменные $users и $quests содержат количество соответствующих человеческих единиц онлайн:)?>

Вот и весь счетчик, не требующий базы данных. Теперь можно просто выводить данные. Как по отдельности, так и суммировать их, например, чтобы показать общее число людишек онлайн.
Автор: Drunya
Категория: PHP
Просмотров: 134272
Комментариев: 0

Сейчас online: 5. Зарегистрированных: 0. Гостей: 5.
-->