parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Я предупреждал, что он большой... 5Kb

Denis Arkhipov 08.06.2004 18:30

<?php

ignore_user_abort (true);
Spesta ();
ignore_user_abort (false);

function Spesta ()
{
 global $_REQUEST, $ref, $pg, $s_addurl, $out, $filterfile, $cfile, $rtran, $typo;

 if (!isset ($s_addurl))
 {
  $z=dirname(__FILE__);
  $z2=$_SERVER['DOCUMENT_ROOT'].dirname ($_SERVER['PHP_SELF']);
  $s_addurl=substr ($z, strpos ($z, $z2)+strlen($z2));
  if ($s_addurl!="") $s_addurl.="/";
 }
 else $s_addurl=str_replace (":","", $s_addurl);


 include ($s_addurl."func.php");

 if (!isset ($ref)) $ref=$GLOBALS['HTTP_REFERER'];
 if (!isset ($pg))  $pg=$GLOBALS['REQUEST_URI'];

 // REQUEST_URI bugfix
 $url=parse_url($pg);
 $pg=$url['path'];
 if ($url['query']!="") $pg.="?".$url['query'];


 if ($s_addurl=="")
 {
  $showcounter=="no";
  header ("Content-type: image/gif");
  include ($s_addurl."p.gif");
  // exit ();
 }

 // WEB_SPIDERS CHECK
 foreach ($robots as $r)
 {
  if (stristr($_SERVER['HTTP_USER_AGENT'], $r)!=false)
   $spider = 1;
 }

 if ($spider)
 {
   loggg ($s_addurl."data/spiders.txt", $_SERVER['HTTP_USER_AGENT']);
 }
 else
 {

  $url = urldecode ($ref);
  if (($url!="") and (!stristr ($url, $host)))
  {

    if (stristr($url, "="))
    {
      if(stristr($url, "yand")) { $sw = "text="; $engine = "Y"; } else
      if(stristr($url, "google.")) { $sw="q="; $engine = "G"; } else
      if((stristr($url, "go.mail.ru")) and (stristr($url, "words="))) { $sw="words="; $engine = "M"; } else
      if(stristr($url, "go.mail.ru")) { $sw = "q="; $engine = "M"; } else
      if(stristr($url, "rambler")) { $sw = "words="; $engine = "R"; } else
      if(stristr($url, "sm.aport")) { $sw="r="; $engine = "A"; } else
      if(stristr($url, "search.yahoo")) { $sw="p="; $engine = "H"; } else
      if(stristr($url, "aolsearch")) { $sw="query="; $engine = "O"; } else
      if(stristr($url, "q=")) { $sw = "q="; $engine = "?"; } else
      if(stristr($url, "query=")) { $sw = "query="; $engine = "?"; }
    }

    $req=1;

    if (isset($engine))
    {

     $req=0;

     $url2=urldecode($url);
     $url2=stripslashes ($url2);
     $url2=strip_tags ($url2);

     if  (stristr($url, "yandpage")) {$url2=convert_cyr_string ($url2, k, w);} #yandexfix

     if (($engine == "G") or ($engine == "?"))
     {
      include $s_addurl."utf.php";
      $url2=utf_decode ($url2);
     }

     eregi ($sw."([^&]*)", $url2."&", $url2);
     $url2=strip_tags ($url2[1]);

     $fullfile="[ <small><b><a href='".$ref."'>".$engine."</a></b></small> ] : <a href='".$pg."' title='[ ".date("d.m.Y H:i")." ]'>".$url2."</a><br>";

     $ya= S_fr ($s_addurl."data/se.txt");
     $ya= explode ("\n", $ya);

     @array_unshift ($ya, $fullfile);
     if (count ($ya)>$numse) unset ($ya[$numse]);

     $output = @array_slice ($ya, 0, 10);

     // SEARCH ENGINES
     $fullfile=implode ("\n", $ya);
     S_fw ($s_addurl."data/se.txt", $fullfile);

     $fullfile=implode ("\n", $output);
     // $fullfile=preg_replace ("/<small>(.*)</\small>/es", "", $fullfile);
     S_fw ($s_addurl."data/se10.txt", $fullfile);

     // SEARCH WORDS
     loggg ($s_addurl."data/words.txt", $url2);

    }
    else
    {
     // REFFERER
     loggg ($s_addurl."data/referers.txt", $url);
    }

  };

  // REQUEST URL
  loggg ($s_addurl."data/request.txt", (urldecode($pg)));

  // NOT UNIQUE USER-AGENTS
  // loggg ($s_addurl."data/agents.txt", $HTTP_USER_AGENT);

  // в этом файле содержатся уникальные ip-шники за день и показания счетчика
  $COUNT_FILE = $s_addurl."data/count.txt";
  $message="";

  // $ip - это тот самый айпишник, прокси учитываются
  if (getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP");
  else if (getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv ("HTTP_X_FORWARDED_FOR");
  else if (getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR");
  else $ip = "UNKNOWN";

  // $ip=$ip." ".$_SERVER['REMOTE_HOST'];

  // вычисляем дату.
  $datum=date("d.m.Y", time());

  // открываем файл
  $conts= S_fr ($COUNT_FILE);

  // date|unique-1|today-2|total-3|search engines-4|other sites-5|homepage-6| text-7

  // считываем кол-во хитов, уникумов и пр.
  $counts= explode("|",$conts);

  // полночь. ;)
  // счетчик обнуляется.

  if ($counts[0]!=$datum) 
  {
   $m = $counts[0]."|".$counts[1]."|".$counts[2]."|".$counts[3]."|".$counts[4]."|".$counts[5]."|".$counts[6];
   $counts[0]=$datum; $counts[1]=$counts[2]=$counts[4]=$counts[5]=$counts[6]=$counts[7]=0;
  }

  // уникумы
  if (loggg ($s_addurl."data/ip.txt", $ip) == false)
  {
  // $counts[7].=$ip;
  $counts[1]++;

  // UNIQUE USER-AGENT
  loggg ($s_addurl."data/agents.txt", $_SERVER['HTTP_USER_AGENT']);

  // FROM SEARCH ENGINES
  if(isset($engine)) { $counts[4]++; }

  // from other sites
  $counts[5]=$counts[5]+$req;
  }

  // увеличение хитов
  $counts[2]++; $counts[3]++;
  if (($pg=="/") or ($pg=="")) $counts[6]++; #home

  // search engines

  // ФОРМАТ СЧЕТЧИКА
  // date|unique-1|today-2|total-3|search engines-4|other sites-5|homepage-6| text-7
  // 1 - уникальных, 2 - хитов сегодня, 3 - хитов всего, 4 - с поисковиков сегодня, 5 - с других сайтов сегодня, 6 - на домашней странице сегодня

  $out['counter']="<b>".$counts[3]."</b> / ".$counts[2]." / <b>".$counts[1]."</b> / ".$counts[5]." / ".$counts[4];

  if ($showcounter=="yes") echo $out['counter'];

  $content=$counts[0]."|".$counts[1]."|".$counts[2]."|".$counts[3]."|".$counts[4]."|".$counts[5]."|".$counts[6];

  if ($content=="||||||") exit ();

  S_fw ($COUNT_FILE, $content);

  ///  MIDNIGHT

  if ($m!="")
  {

   if ($m!="||||||")
   {
    $fp = @fopen($s_addurl."data/days.txt", "a");
    fwrite($fp, $m."\n");
    fclose($fp);
   }

   S_fw ($s_addurl."data/ip.txt", "");

   // по понедельникам - отчет
   // include $s_addurl."report.php";
   if ((date ("w")==1) and ($mailreport=="yes")) include $s_addurl."report.php";

  }

 }

}

?>