Файл: includes/counter.php
Строк: 159
<?php
error_reporting(0);
$site=explode('/',$_SERVER['QUERY_STRING']);
$ip=$site[2];
$pkey='/'.$site[1];
$site=$site[0];
$name=explode('.',$_SERVER['HTTP_X_FORWARDED_HOST']);
$domain=strtolower($name[1]);
$counterfile='/home/kmx/www/sites/'.$domain.'/'.$site.'/counter.dat';
if ($site=='top') $counterfile="/home/kmx/includes/sluzhebnye/top.counter";
elseif ($site=='wap') $counterfile="/home/kmx/includes/sluzhebnye/wap.counter";
elseif ($site=='catalog') $counterfile="/home/kmx/includes/sluzhebnye/catalog.counter";
elseif ($site=='forum') $counterfile="/home/kmx/includes/sluzhebnye/forum.counter";
elseif (!is_dir('/home/kmx/www/sites/'.$domain.'/'.$site))
{
header("Content-type: image/vnd.wap.wbmp");
$im=ImageCreate(76,8);
$white=ImageColorAllocate($im, 255,255,255);
$black=ImageColorAllocate($im, 0,0,0);
imageString($im, 1, 1, 0, 'Site not found!', $black);
imagewbmp($im);
imageDestroy($im);
}
$page=file('/home/kmx/www/sites/'.$domain.'/'.$site.'/index.wml');
for ($i=0;$i<sizeof($page);$i++)
{
if (substr(trim($page[$i]),0,12)!='<!-- cnt -->') continue;
$stra=explode('cnt.'.$domain.'.ru/'.$site,$page[$i]);
$stra=explode('"',$stra[1]);
$pkey_=$stra[0];
break;
}
unset($page);
$y2k = mktime(23,59,59,date('n'),date('j'),date('Y'));
setcookie($site, 1, $y2k);
$vizit=$HTTP_COOKIE_VARS[$site];
$hua="*".strtoupper($_SERVER['HTTP_USER_AGENT']);
$browser=$_SERVER['HTTP_USER_AGENT'];
$komp=false;
$komp=(trim($hua)=='*')
||strpos($hua,'MOZILLA')
||strpos($hua,'MSIE')
||strpos($hua,'WINDOWS')
||strpos($hua,'KLONDIKE')
#||strpos($hua,'OPERA')
||strpos($hua,'M3GATE')
||strpos($hua,'EMULATOR')
||strpos($hua,'TAGTAG')
||strpos($hua,'ALPHACELL')
||strpos($hua,'WAPSILON')
||strpos($hua,'EZOS')
||strpos($hua,'BILBO')
||strpos($hua,'WINWAP')
||strpos($hua,'MYSOCK')
||strpos($hua,'BERCUT')
||strpos($hua,'WAPPER')
||strpos($hua,'TTPCOM')
||strpos($hua,'UNKNOWN')
||strpos($hua,'PORTALMMM')
||strpos($hua,'EZZE')
||strpos($hua,'JAVA')
||strpos($hua,'JBROWSER')
||strpos($hua,'SEND')
||strpos($hua,'WINSIM')
||strpos($hua,'WAPALIZER')
||strpos($hua,'TELEPORT')
||strpos($hua,'TSM')
||strpos($hua,'TCL')
||strpos($hua,'OPWV')
||strpos($hua,'SKT');
if ($komp) $browser='-komp-';
if (!file_exists($counterfile))
{
# Создание файла данных счетчика
$f=@fopen($counterfile,"w+");
fseek($f,0,SEEK_SET); fwrite($f,str_repeat(' ',1500));
fseek($f,0,SEEK_SET); fwrite($f,substr('ID='.$n.' ',0,9)."n");
fseek($f,10,SEEK_SET); fwrite($f,substr(''.$counter[5].str_repeat(' ',55),0,60)."n");
fseek($f,71,SEEK_SET); fwrite($f,substr(''.$counter[6].str_repeat(' ',25),0,20)."n");
fseek($f,92,SEEK_SET); fwrite($f,substr(''.$counter[7].str_repeat(' ',75),0,60)."n");
fseek($f,153,SEEK_SET); fwrite($f,substr(''.trim($counter[8]).str_repeat(' ',75),0,23)."n");
fseek($f,177,SEEK_SET); fwrite($f,date('d.m.Y H:i:s (----------)')."n");
fseek($f,210,SEEK_SET); fwrite($f,str_repeat('=',29)."n");
fseek($f,240,SEEK_SET); fwrite($f,substr('ВСЕГО: '.$counter[0].str_repeat(' ',9),0,16)."n");
fseek($f,257,SEEK_SET); fwrite($f,str_repeat('-',29)."n");
fseek($f,287,SEEK_SET); fwrite($f," ПО ЧАСАМ n");
fseek($f,310,SEEK_SET); fwrite($f,"HOUR HIT HOST TIMESTAMP n");
fseek($f,1060,SEEK_SET); fwrite($f,str_repeat('-',29)."n");
fseek($f,1090,SEEK_SET); fwrite($f," ПО ДНЯМn");
fseek($f,1110,SEEK_SET); fwrite($f,"DAY HIT HOST TIMESTAMP n");
fclose($f);
@chmod($counterfile,0777);
}
#========= РАБОТА С ФАЙЛОМ СЧЕТЧИКА ============================================
if ($f=@fopen($counterfile,"r+"))
{
flock($f,2);
fseek($f,0,SEEK_SET);
// Время сейчас
$hour=date('G');
$day=date('w');
$timestamp=time();
// Время на счетчике
fseek($f,198,SEEK_SET); $timestamp_=fread($f,10);
$hour_=date('G',$timestamp_);
$day_=date('w',$timestamp_);
# Если большая пауза счета, то сбрасываем просроченые значения
if ($timestamp-$timestamp_>3600)
{
for ($_hour=0;$_hour<24;$_hour++)
{
fseek($f,359+$_hour*30,SEEK_SET);
$_timestamp=fread($f,10);
fseek($f,340+$_hour*30,SEEK_SET);
if ($timestamp-$_timestamp>86400) fwrite($f,substr('0'.$_hour,-2)." 0 0 ----------n");
}
for ($_day=0;$_day<7;$_day++)
{
fseek($f,1159+$_day*30,SEEK_SET);
$_timestamp=fread($f,10);
fseek($f,1140+$_day*30,SEEK_SET);
if ($timestamp-$_timestamp>604800) fwrite($f,$_day." 0 0 ----------n");
}
}
# Счетчик за час
if ($hour_==$hour)
{
fseek($f,342+$hour*30,SEEK_SET);
$hit_hour=trim(fread($f,9));
$host_hour=trim(fread($f,7));
}
else
{
$hit_hour=0;
$host_hour=0;
}
# Счетчик за день
if ($day_==$day)
{
fseek($f,1142+$day*30,SEEK_SET);
$hit_day=trim(fread($f,9));
$host_day=trim(fread($f,7));
}
else
{
$hit_day=0;
$host_day=0;
}
# Общее хитов
fseek($f,247,SEEK_SET);
$hit_all=trim(fread($f,9));
if (($site=='top')||($site=='wap')||($site=='catalog')||($site=='forum')) $pkey=$pkey_;
if ($pkey==$pkey_)
{
# Проверка уникальности
$unical=true;
$data_unical='';
$userinfo=trim(substr(substr($_SERVER['REMOTE_ADDR'].str_repeat(' ',15),0,15).' '.$browser,0,68));
fseek($f,1450,SEEK_SET);
while (!feof($f))
{
$_timestamp=fread($f,10);
$_userinfo=trim(fread($f,70));
if ($timestamp-$_timestamp>3600) continue;
$data_unical.=$_timestamp.' '.substr($_userinfo.str_repeat(' ',70),0,68)."n";
if ((substr($userinfo,0,15)==substr($_userinfo,0,15))&&(substr($_userinfo,15,6)=='-komp-')) $unical=false;
if ($userinfo==$_userinfo) $unical=false;
if ($vizit==1) $unical=false;
}
if ($unical) $data_unical.=$timestamp.' '.substr($userinfo.str_repeat(' ',70),0,68)."n";
fseek($f,1350,SEEK_SET); fwrite($f,str_repeat('-',39)."n");
fseek($f,1390,SEEK_SET); fwrite($f," УНИКАЛЬНЫЕ n");
fseek($f,1410,SEEK_SET); fwrite($f,"TIMESTAMP IP USER_AGENT n");
fseek($f,1450,SEEK_SET); fwrite($f,$data_unical);
# Увеличение хостов
if ($unical)
{
$host_day++;
$host_hour++;
}
# Увеличение хитов
$hit_all++;
$hit_day++;
$hit_hour++;
# Сохраняем
fseek($f,340+$hour*30,SEEK_SET); fwrite($f,substr('0'.$hour,-2).' '.substr(' '.$hit_hour,-8).' '.substr(' '.$host_hour,-6).' '.time()."n");
fseek($f,1140+$day*30,SEEK_SET); fwrite($f,$day.' '.substr(' '.$hit_day,-9).' '.substr(' '.$host_day,-6).' '.time()."n");
fseek($f,247,SEEK_SET); fwrite($f,substr($hit_all.str_repeat(' ',9),0,9)."n");
fseek($f,177,SEEK_SET); fwrite($f,date('d.m.Y H:i:s (U)')."n");
ftruncate($f,1450+strlen($data_unical));
}
flock($f,3);
fclose($f);
}
#================================ РАБОТА С БАЗОЙ ===============================
define("DBName","kmx");
define("HostName","localhost");
define("UserName","kmx");
define("Password","kmx-hosting");
# Сбрасываем значения счетчиков в каталоге и рейтинге
if (($hit_day<5)&&($hit_day>0))
{
$connectserv=@mysql_connect(HostName, UserName, Password);
$selectDB=@mysql_select_db(DBName);
$connect_bd=(($connectserv!=0)&&($selectDB!=0));
if (!$connect_bd) die('Do not connect BD...');
$q=@mysql(DBName,"SELECT `day` FROM `counter` WHERE `domain` = '".addslashes($domain)."' AND `login` = '".addslashes($site)."' LIMIT 0, 1");
$data=@mysql_fetch_array($q);
$s=@mysql_num_rows($q);
if (($data['day'] != date('j'))&&($s>0))
{
# Ставим текущую дату
@mysql(DBName,"UPDATE `sites` SET `dd` = '".date('j')."' ,".
# обнуляем счетчик за текущий день недели
"`d".date('w')."` = '0' ,".
# обновляем общий счетчик
"`da` = `d0` + `d1` + `d2` + `d3` + `d4` + `d5` + `d6`".
# если не та дата...
"WHERE `dd` != '".date('j')."'");
@mysql(DBName,"UPDATE `counter` SET `flag` = '0' ,
`hit` = '0' ,
`host` = '0' ,
`day` = '".date('j')."'
WHERE `day` != '".date('j')."'");
file('http://kmx.ru/stat_magsu.php');
}
if ($s<1) @mysql(DBName,"INSERT INTO `counter` ( `domain`, `login` , `day`, `hit` , `host` , `host24`) VALUES ( '".addslashes($domain)."', '".addslashes($site)."' , '".date('j')."' , '$hit_day' , '$host_day' , '$host24');");
@mysql(DBName,"UPDATE `counter` SET `flag` = '1' WHERE `domain` = '".addslashes($domain)."' AND `login` = '".addslashes($site)."' LIMIT 1");
}
$str=$host_day.'|'.$hit_day;
Header("Expires: Mon, 26 Jul 1988 05:00:00 GTM");
Header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
Header("Cache-Control: no-cache, must-relative");
Header("Pragma: no-cache");
header("Content-type: image/vnd.wap.wbmp");
$im=ImageCreate(strlen($str)*5+1,8);
$white=ImageColorAllocate($im, 255,255,255);
$black=ImageColorAllocate($im, 0,0,0);
imageString($im, 1, 1, 0, $str, $black);
imagewbmp($im);
imageDestroy($im);
print str_repeat("x00",2000);
if ((!strpos($pkey,'.') && (substr($hit_day,-1)!='1') && (substr($hit_day,-1)!='6'))||(($site=='top')||($site=='wap')||($site=='catalog')||($site=='forum'))) exit;
$_key=rand(10000,99999).rand(10000,99999);
$npage='';
$page=file('/home/kmx/www/sites/'.$domain.'/'.$site.'/index.wml');
if (trim($page[1])=='') exit;
for ($i=0;$i<sizeof($page);$i++)
{
if (substr(trim($page[$i]),0,12)=='<!-- cnt -->') {$page[$i]='<!-- cnt --><br/><a href="http://top.'.$domain.'.ru"><img src="http://cnt.'.$domain.'.ru/'.$site.'/'.$_key.'" alt="TOP-KMX.Ru"/></a>';}
$npage.=trim($page[$i])."n";
}
$fp = fopen ('/home/kmx/www/sites/'.$domain.'/'.$site.'/index.wml', 'w+');
fwrite ($fp, $npage);
fclose ($fp);
?>