virt2/api/soft/jcount/counter.php

104 lines
4.4 KiB
PHP
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<? // WR-Counter v 1.5 UTF-8 // 25.11.18 г. // Miha-ingener@yandex.ru
#error_reporting(E_ALL);
include "data/config.php";
$times=time(); $ldate="0"; // Блок МЫЛИТ СТАТИСТИКУ АДМИНУ
if (is_file("$coundir/last.csv")) {$lline=file("$coundir/last.csv"); $li=count($lline); if ($li>0) $ldate=$lline[0];}
$datescribe=$ldate+7*86400; // расчитываем дату отправки
if ($times>$datescribe) include("infomail.php");
function browser($agent) { // Функция определяет БРАУЗЕР
preg_match("/(MSIE|Opera|Firefox|Chrome|Chromium|Version)(?:\/| )([0-9.]+)/", $agent, $browser_info);
list(,$browser,$version) = $browser_info;
if (strlen($version)>3) {$version=substr($version,0,1); $version.="0+";} // Для версий 30-99 будет показываться 30+ или 40+ и т.д.
if ($browser == 'Opera' && $version == '9.80') return 'Opera '.substr($agent,-5);
if ($browser == 'Version') return 'Safari '.$version;
if (!$browser && strpos($agent, 'Gecko')) return 'Браузер на движке Gecko';
return $browser.' '.$version; }
function user_os($user_agent) { // Функция определяет ОПЕРАЦИОННУЮ СИСТЕМУ. C 2016 добавлены Android, iPod, iPhone, iPad
$os=array(
'Windows' => 'Win',
'Open BSD'=>'OpenBSD',
'Sun OS'=>'SunOS',
'Linux'=>'(Linux)|(X11)',
'Mac OS'=>'(Mac_PowerPC)|(Macintosh)',
'QNX'=>'QNX',
'BeOS'=>'BeOS',
'OS/2'=>'OS/2',
'Android' => '(Android)',
'iPod' => '(iPod)',
'iPhone' => '(iPhone)',
'iPad' => '(iPad)');
foreach($os as $key=>$value) {if (preg_match('#'.$value.'#i', $user_agent)) return $key;}
return 'Неизвестна'; }
function addSpace($num) {$strlen=17-strlen($num); $space=null; while($strlen) {$space.=" "; $strlen--;} return $space.$num;}
function read_file($path)
{if(!is_file($path))return false;
elseif(!filesize($path))return array();
elseif($array=file($path))return $array;
else while(!$array=file($path))sleep(1);
return $array;}
function normal_numeric($number)
{if(!isset($number))return false;
else{$strlen=strlen($number);
$new=null;
for ($i=$strlen-1;$i>-1;$i--)
{$n = $i;$n++;if(strstr($n/3,"."))$new.=$number[$strlen-1-$i];
else if($n!=$strlen)$new.=" ".$number[$strlen-1-$i];
else$new.=$number[$strlen-1-$i];}
return $new;}}
if(!extension_loaded("gd")) exit("У Вашего хостера моуль GD не загружен - скрипт работать НЕ будет");
$browser=browser($_SERVER['HTTP_USER_AGENT']); // Определяем БРАУЗЕР
$os=user_os($_SERVER['HTTP_USER_AGENT']); // Определяем ОС
$ip=(isset($_SERVER['REMOTE_ADDR']))?$_SERVER['REMOTE_ADDR']:0; // Определяем IP
$a=$b=$c=null;
$today=date('d.m.Y',time());
if (isset($_SERVER["HTTP_REFERER"])) $from=$_SERVER["HTTP_REFERER"]; else $from=""; // Определяем СТРАНИЦУ
if (!is_file("$coundir/$today.csv")) {$OpenToday=fopen("$coundir/$today.csv","a"); fclose($OpenToday);}
$itogo=read_file("$coundir/all.csv"); if(!isset($itogo[0])) $itogo[0]=0;
$fp=fopen("$coundir/all.csv","a+");
flock ($fp,LOCK_EX);
$a=fread($fp,100);
@$a=$a+1;
ftruncate($fp, 0);
fwrite($fp,$a);
fflush($fp);
flock($fp,LOCK_UN);
fclose($fp);
$ft=fopen("$coundir/$today.csv","a"); flock ($ft,LOCK_EX); fwrite($ft,"$ip;$times;$browser;$os;$from;\r\n"); flock ($ft,LOCK_UN); fclose($ft);
$newlines=read_file("$coundir/$today.csv");
for ($i=0;$i < count($newlines); $i++) {$dt=explode(";", $newlines[$i]); $lines[$i]=$dt[0];}
$b=count($lines); $c=count(array_unique($lines));
if(strlen($a)>9||!isset($a)) $a="?"; if(strlen($b)>9||!isset($b)) $b="?"; if(strlen($c)>9||!isset($c)) $c="?";
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-type: image/png".chr(10).chr(10));
$image=ImageCreateFromPNG("./images/".$image);
$color1=ImageColorAllocate($image,$s1r,$s1g,$s1b);
$color2=ImageColorAllocate($image,$s2r,$s2g,$s2b);
$color3=ImageColorAllocate($image,$s3r,$s3g,$s3b);
ImageString($image,1,0,2, addSpace(normal_numeric("$a")),$color1);
ImageString($image,1,0,12, addSpace(normal_numeric("$b")),$color2);
ImageString($image,1,0,21, addSpace(normal_numeric("$c")),$color3);
ImagePNG($image);
?>