<?php
  ///////////////////////////////////////////////////
  // Система учёта посещаемости сайта - PowerCounter
  // 2003-2006 (C) IT-студия SoftTime (http://www.softtime.ru)
  // Поддержка: http://www.softtime.ru/forum/
  // Симдянов И.В. (simdyanov@softtime.ru)
  // Кузнецов М.В. (kuznetsov@softtime.ru)
  // Голышев С.В. (softtime@softtime.ru)
  // Левин А.В. (loki_angel@mail.ru)
  // 31.01.2006 добавлена статистика по городам и регионам, исключены роботы, добавлена нумерация, исправлен расчет интервала выборки
  ///////////////////////////////////////////////////
  // Выставляем уровень обработки ошибок (http://www.softtime.ru/info/articlephp.php?id_article=23)
  Error_Reporting(E_ALL & ~E_NOTICE); 
  $title = 'IP адреса';
  $pageinfo = 'На этой странице вы можете видеть IP-адреса
  посетителей, соответствующие этим адресам доменные имена
  хостов, количество обращений с данного IP-адреса, процент
  обращений с этого IP-адреса от общего количества обращений
  и последнее время обращения с этого IP-адреса. Нажав на
  подсвеченный IP-адрес можно получить информацию о том,
  на кого он зарегистрирован. ';  
  $helppage='';
  // Заголовок страницы
  include "topcounter.php";

  // Запрашиваем уникальные ip-адреса из базы данных
  // отсортиврованные по времени
  if(empty($_GET['page'])) $page = 1;
  else $page = $_GET['page'];
  // Вычисляем начало вывода
  $begin = ($page - 1)*$pnumber;

  $tmp = "";
  $tmp1 = "";
  if(!empty($id_page))
  {
    $tmp = " AND id_page=".$id_page;
    $tmp1 = "AND id_page=".$id_page;
  }

  $page_link = 3;
  // Определяем число посетителей с уникальными IP-адресами
  // за последние сутки
  $query = "SELECT count(distinct ip) FROM $tbl_ip 
            WHERE systems != 'none' AND
            systems != 'robot_yandex' AND 
            systems != 'robot_google' AND
            systems != 'robot_rambler' AND
            systems != 'robot_aport' AND
            systems != 'robot_msnbot' AND
            putdate > DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL 1 DAY $tmp";
  $num = mysql_query($query);
  if(!$num) puterror("Ошибка при обращении к таблице IP-адресов...");
  $total = mysql_result($num,0);
  // Определяем число страниц
  $number = (int)($total/$pnumber);
  if((float)($total/$pnumber)-$number != 0) $number++;

  // Проверяем есть ли ссылки слева
  if($page - $page_link > 1)
  {
    echo "<a href=$_SERVER[PHP_SELF]?id_page=".$id_page."&page=1> <nobr>[1-$pnumber]</nobr></a> <em class=currentpage><nobr> ... </nobr> </em> ";
    // Есть
    for($i = $page - $page_link; $i<$page; $i++)
    {
        echo " <a href=$_SERVER[PHP_SELF]?id_page=".$id_page."&page=".$i."> <nobr>[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</nobr></a> ";
    }
  }
  else
  {
    // Нет
    for($i = 1; $i<$page; $i++)
    {
        echo " <a href=$_SERVER[PHP_SELF]?id_page=".$id_page."&page=".$i."> <nobr>[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</nobr></a> ";
    }
  }
  // Проверяем есть ли ссылки справа
  if($page + $page_link < $number)
  {
    // Есть
    for($i = $page; $i<=$page + $page_link; $i++)
    {
      if($page == $i)
        echo "<em class=currentpage><nobr> [".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."] </nobr> </em>";
      else
        echo " <a href=$_SERVER[PHP_SELF]?id_page=".$id_page."&page=".$i."> <nobr>[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</nobr></a> ";
    }
    echo "<em class=currentpage><nobr> ... </nobr> </em> <a href=$_SERVER[PHP_SELF]?id_page=".$id_page."&page=$number> <nobr>[".(($number - 1)*$pnumber + 1)."-$total]</nobr></a> ";
  }
  else
  {
    // Нет
    for($i = $page; $i<=$number; $i++)
    {
      if($number == $i)
      {
        if($page == $i)
          echo "<em class=currentpage><nobr> [".(($i - 1)*$pnumber + 1)."-$total] </nobr></em>";
        else
          echo " <a href=$_SERVER[PHP_SELF]?id_page=".$id_page."&page=".$i.">[".(($i - 1)*$pnumber + 1)."-$total]</a> ";
      }
      else
      {
        if($page == $i)
          echo "<em class=currentpage><nobr> [".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."] </nobr> </em>";
        else
          echo " <a href=$_SERVER[PHP_SELF]?id_page=".$id_page."&page=".$i."> <nobr>[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</nobr></a> ";
      }
    }
  }

  // Выводим сами ip-адреса
  ?>
    <br><br><table class="table" border="0" cellpadding="0" cellspacing="0">   
       <tr class="header" align="center">
         <td>№</td>
         <td>IP-адрес</td>
         <td>Хост</td>
         <td>Город</td>
         <td>Регион</td>
         <td>Всего посещений</td>
         <td>Последнее обращение</td>
       </tr>
  <?
  // Формируем и выполняем SQL-запрос, извлекающий 
  $query = "SELECT INET_NTOA(ip) AS ip,
                   max(putdate) AS putdate,
                   count(id_ip) AS hits FROM $tbl_ip
            WHERE
            systems != 'none' AND
            systems != 'robot_yandex' AND 
            systems != 'robot_google' AND
            systems != 'robot_rambler' AND
            systems != 'robot_aport' AND
            systems != 'robot_msnbot' AND
            putdate > DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL 1 DAY $tmp
            GROUP BY ip
            ORDER BY putdate DESC
            LIMIT $begin, $pnumber";
  $ips = mysql_query($query);
  if(!$ips) puterror("Ошибка при обращении к таблице IP-адресов...");
  if(mysql_num_rows($ips) > 0)
  {
    $i=1;
    while($ip = mysql_fetch_array($ips))
    {
      $query = "SELECT city_name, region_name FROM $tbl_ip_compact, $tbl_cities, $tbl_regions
                WHERE INET_ATON('$ip[ip]') BETWEEN init_ip AND end_ip AND 
                      $tbl_cities.city_id=$tbl_ip_compact.city_id AND
                      $tbl_cities.region_id=$tbl_regions.region_id";
      $reg = mysql_query($query);
      if(!$reg) puterror("Ошибка при определении местоположения IP-адреса");
      $region = mysql_fetch_array($reg);
      echo "<tr>
            <td>$i</td>
            <td><a href='pages.php?nav=1&ip=".$ip['ip']."'>".$ip['ip']."</a></td>";
      if(HOST_BY_ADDR) echo "<td>".(@gethostbyaddr($ip['ip']))."</td>";
      else echo "<td align=center>-</td>";
      if ($region['city_name']) echo "<td>".$region['city_name']."</td>"; else echo "<td>нет данных</td>";
      if ($region['region_name']) echo "<td>".$region['region_name']."</td>"; else echo "<td>нет данных</td>";
      echo "<td>".$ip['hits']."</td><td>".$ip['putdate']."</td>";
      $i++;
    }
  }
  echo "</table>";
  // Включаем завершение страницы
  include "bottomcounter.php";   
?>