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

  // Устанавливаем соединение с базой данных
  require_once("config.php");

  //проверка что путь заканчивается index.php
  if(substr($_SERVER['PHP_SELF'],strlen($_SERVER['PHP_SELF'])-1) == "/") $_SERVER['PHP_SELF'] .= "index.php";
  
  // Переменная для ссылки на страницу для которой производится подсчёт
  // Формируем строчку с ip
  if($obtip == 0) $ip = $_SERVER['REMOTE_ADDR']; // По умолчанию
  if($obtip == 1) $ip = urldecode(getenv(HTTP_CLIENTIP)); // www.nodex.ru
  if(empty($ip)) $ip = '0.0.0.0';

  $tbl_ip       = 'system_ip';                // Для совместимости с 2.9 перименовать в ip
  $tbl_pages    = 'system_pages';             // Для совместимости с 2.9 перименовать в pages
  $tbl_refferer = 'system_refferer';          // Для совместимости с 2.9 перименовать в refferer
  $tbl_searchquerys = 'system_searchquerys';  // Для совместимости с 2.9 перименовать в searchquerys

  // Это строчка с реферером - URL страницы, с которой посетитель пришёл на 
  // сайт
  $reff = urldecode($_SERVER['HTTP_REFERER']);
  // Соединяемся с сервером базы данных
  $dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
  if($dbcnx)
  {
    // Выбираем базу данных
    if(@mysql_select_db($dbname,$dbcnx))
    {
      if(empty($titlepage)) $titlepage = "http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'];
      if (!get_magic_quotes_gpc()) $titlepage = mysql_escape_string($titlepage);
      $query = "SELECT id_page FROM $tbl_pages 
                WHERE title = '$titlepage'"; 
      $pgs = mysql_query($query); 
      if ($pgs) 
      {
        // Выясним, первичный ключ (id_page) текущей страницы  (по названию страницы) 
        if(mysql_num_rows($pgs)>0) $id_page = mysql_result($pgs,0); 
        // Если название данной страницы отсутствует в таблице pages 
        // то проверяем сраницу по ее адресу. 
        else 
        {   
          $query = "SELECT id_page FROM $tbl_pages 
                    WHERE name='".$_SERVER['PHP_SELF']."'"; 
          $pgs = mysql_query($query); 
          if ($pgs) 
          {
            // Выясним, первичный ключ (id_page) текущей страницы (по адресу страницы) 
            if(mysql_num_rows($pgs)>0) 
            { 
             $id_page = mysql_result($pgs,0); 
             $query = "UPDATE $tbl_pages SET title='$titlepage' WHERE id_page=$id_page"; 
             mysql_query($query); 
            } 
            // Если данная страница отсутствует в таблице pages 
            // и не разу не учитывалась - добавляем данную страницу в таблицу. 
            else 
            {   
              $query = "INSERT INTO $tbl_pages VALUES (NULL, '".$_SERVER['PHP_SELF']."','$titlepage', 0)";                 
              @mysql_query($query); 
              // Выясняем первичный ключ только что добавленной 
              // страницы 
              $id_page = mysql_insert_id(); 
            } 
          }
        }
      }
      // Определяем строку USER_AGENT
      $useragent = $_SERVER['HTTP_USER_AGENT'];
      $browser = 'none';
      // Выясняем браузер
      if(strpos($useragent, "Mozilla") !== false) $browser = 'mozilla';
      if(strpos($useragent, "MSIE")    !== false) $browser = 'msie';
      if(strpos($useragent, "MyIE")    !== false) $browser = 'myie';
      if(strpos($useragent, "Opera")   !== false) $browser = 'opera';
      if(strpos($useragent, "Netscape")!== false) $browser = 'netscape';
      if(strpos($useragent, "Firefox") !== false) $browser = 'firefox';
      // Выясняем операционную систему
      $os = 'none';
      if(strpos($useragent, "Win")      !== false) $os = 'windows';
      if(strpos($useragent, "Linux")    !== false 
      || strpos($useragent, "Lynx")     !== false
      || strpos($useragent, "Unix")     !== false) $os = 'unix';
      if(strpos($useragent, "Macintosh")!== false) $os = 'macintosh';
      if(strpos($useragent, "PowerPC")  !== false) $os = 'macintosh';
      // Выясняем принадлежность к поисковым роботам
      if(strpos($useragent, "StackRambler") !== false) $os = 'robot_rambler';
      if(strpos($useragent, "Googlebot")    !== false) $os = 'robot_google';
      if(strpos($useragent, "Mediapartners-Google")    !== false) $os = 'robot_google';
      if(strpos($useragent, "Yandex")       !== false) $os = 'robot_yandex';
      if(strpos($useragent, "Aport")        !== false) $os = 'robot_aport';
      if(strpos($useragent, "msnbot")       !== false) $os = 'robot_msnbot';
      $search = 'none';
      // Выясняем принадлежность к поисковым системам
      if(strpos($reff,"yandex"))  $search = 'yandex';
      if(strpos($reff,"rambler")) $search = 'rambler';
      if(strpos($reff,"google"))  $search = 'google';
      if(strpos($reff,"aport"))   $search = 'aport';
      if(strpos($reff,"mail") && strpos($reff,"search"))   $search = 'mail';
      if(strpos($reff,"msn") && strpos($reff,"results"))   $search = 'msn';
      $server_name = $_SERVER["SERVER_NAME"];
      if(substr($_SERVER["SERVER_NAME"],0,4) == "www.") $server_name = substr($_SERVER["SERVER_NAME"],4);
      if(strpos($reff,$server_name)) $search = 'own_site';

      // Заносим всю собранную информацию в базу данных
      $query_main = "INSERT INTO $tbl_ip VALUES (                                           
                 NULL,
                 INET_ATON('$ip'),
                 NOW(),
                 $id_page,
                 '$browser',
                 '$os')";
      @mysql_query($query_main);
      // Если имеется реферер, заносим информацию о нём в отдельную таблицу
      if(!empty($reff) && $search=="none")
      {
        $reff = str_replace("'","`",$reff);
        $query_reff = "INSERT INTO $tbl_refferer VALUES (
                 NULL,
                 '$reff',
                 now(),
                 INET_ATON('$ip'),
                 $id_page)";
        @mysql_query($query_reff);
      }
    //вносим поисковый запрос в соответствующую таблицу
    if(!empty($reff) && $search!="none" && $search != "own_site")
    {
       switch($search)
       {
         case 'yandex':
         {
             eregi("text=([^&]*)", $reff."&", $query); 
             if(strpos($reff,"yandpage")!=null)
               $quer=convert_cyr_string(urldecode($query[1]),"k","w");
             else
               $quer=$query[1];
           break;
         }
         case 'rambler':
         {
           eregi("words=([^&]*)", $reff."&", $query); 
           $quer = $query[1];
           break;
         }
         case 'mail':
         {
           eregi("q=([^&]*)", $reff."&", $query); 
           $quer = $query[1];
           break;
         }
         case 'google':
         {
           eregi("q=([^&]*)", $reff."&", $query); 
           $quer = utf8_win($query[1]); 
           break;
         }
         case 'msn':
         {
           eregi("q=([^&]*)", $reff."&", $query); 
           $quer = utf8_win($query[1]);
           break;
         }
         case 'aport':
         {
           eregi("r=([^&]*)", $reff."&", $query); 
           $quer = $query[1];
           break;
         }
        }//конец для switch
        $symbols = array("\"", "'", "(", ")", "+", ",", "-"); 
        $quer = str_replace($symbols, " ", $quer); 
        $quer = trim($quer); 
        $quer = preg_replace('|[\s]+|',' ',$quer); 
        $sql="INSERT INTO $tbl_searchquerys VALUES (NULL, '$quer', now(), INET_ATON('$ip'), $id_page, '$search')";
        @mysql_query($sql);
     }
   }
 }
function utf8_win($s)
{
    $s=str_replace("\xD0\xB0","а",$s);  $s=str_replace("\xD0\x90","А",$s);
    $s=str_replace("\xD0\xB1","б",$s);  $s=str_replace("\xD0\x91","Б",$s);
    $s=str_replace("\xD0\xB2","в",$s);  $s=str_replace("\xD0\x92","В",$s);
    $s=str_replace("\xD0\xB3","г",$s);  $s=str_replace("\xD0\x93","Г",$s);
    $s=str_replace("\xD0\xB4","д",$s);  $s=str_replace("\xD0\x94","Д",$s);
    $s=str_replace("\xD0\xB5","е",$s);  $s=str_replace("\xD0\x95","Е",$s);
    $s=str_replace("\xD1\x91","ё",$s);  $s=str_replace("\xD0\x81","Ё",$s);
    $s=str_replace("\xD0\xB6","ж",$s);  $s=str_replace("\xD0\x96","Ж",$s);
    $s=str_replace("\xD0\xB7","з",$s);  $s=str_replace("\xD0\x97","З",$s);
    $s=str_replace("\xD0\xB8","и",$s);  $s=str_replace("\xD0\x98","И",$s);
    $s=str_replace("\xD0\xB9","й",$s);  $s=str_replace("\xD0\x99","Й",$s);
    $s=str_replace("\xD0\xBA","к",$s);  $s=str_replace("\xD0\x9A","К",$s);
    $s=str_replace("\xD0\xBB","л",$s);  $s=str_replace("\xD0\x9B","Л",$s);
    $s=str_replace("\xD0\xBC","м",$s);  $s=str_replace("\xD0\x9C","М",$s);
    $s=str_replace("\xD0\xBD","н",$s);  $s=str_replace("\xD0\x9D","Н",$s);
    $s=str_replace("\xD0\xBE","о",$s);  $s=str_replace("\xD0\x9E","О",$s);
    $s=str_replace("\xD0\xBF","п",$s);  $s=str_replace("\xD0\x9F","П",$s);
    $s=str_replace("\xD1\x80","р",$s);  $s=str_replace("\xD0\xA0","Р",$s);
    $s=str_replace("\xD1\x81","с",$s);  $s=str_replace("\xD0\xA1","С",$s);
    $s=str_replace("\xD1\x82","т",$s);  $s=str_replace("\xD0\xA2","Т",$s);
    $s=str_replace("\xD1\x83","у",$s);  $s=str_replace("\xD0\xA3","У",$s);
    $s=str_replace("\xD1\x84","ф",$s);  $s=str_replace("\xD0\xA4","Ф",$s);
    $s=str_replace("\xD1\x85","х",$s);  $s=str_replace("\xD0\xA5","Х",$s);
    $s=str_replace("\xD1\x86","ц",$s);  $s=str_replace("\xD0\xA6","Ц",$s);
    $s=str_replace("\xD1\x87","ч",$s);  $s=str_replace("\xD0\xA7","Ч",$s);
    $s=str_replace("\xD1\x88","ш",$s);  $s=str_replace("\xD0\xA8","Ш",$s);
    $s=str_replace("\xD1\x89","щ",$s);  $s=str_replace("\xD0\xA9","Щ",$s);
    $s=str_replace("\xD1\x8A","ъ",$s);  $s=str_replace("\xD0\xAA","Ъ",$s);
    $s=str_replace("\xD1\x8B","ы",$s);  $s=str_replace("\xD0\xAB","Ы",$s);
    $s=str_replace("\xD1\x8C","ь",$s);  $s=str_replace("\xD0\xAC","Ь",$s);
    $s=str_replace("\xD1\x8D","э",$s);  $s=str_replace("\xD0\xAD","Э",$s);
    $s=str_replace("\xD1\x8E","ю",$s);  $s=str_replace("\xD0\xAE","Ю",$s);
    $s=str_replace("\xD1\x8F","я",$s);  $s=str_replace("\xD0\xAF","Я",$s);
    return $s;
} 
?>