View file reiting/count.php

File size: 11.55Kb
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
@include "./config.php";

//проверка  ввода id
if (empty($_GET['uid'])) exit;
$uid=$_GET['uid'];

// проверка существования учетной записи
$result = mysql_query("SELECT link FROM users WHERE uid=$uid");
$row=mysql_fetch_row($result);
if (empty($row[0])) exit;

// получаем ip посетителя
$ip=$REMOTE_ADDR;
$ua=$HTTP_USER_AGENT;

// текущий час, день недели и дата
$hour = date("H");
$day = date("d");
$today = date("Ymd");
// ------------------------- обнулялка хостов ----------------------------
// извлекаем время последней записи в счетчик хостов
$result = mysql_query("SELECT time FROM hits_time WHERE uid=$uid");
$row=mysql_fetch_row($result);
// если время отсутствует, запоминаем
if(empty($row[0])){
        @mysql_query("INSERT INTO hits_time VALUES ($uid,$today)");
        $reset_time = $today;
} else $reset_time = $row[0];
// удаляем записи ip старее суток
if($today != $reset_time){
     @mysql_query("DELETE FROM hits_ip WHERE uid=$uid");
     @mysql_query("UPDATE hits_time SET time = $today WHERE uid=$uid");
}
//------------------------------ часовая статистика -------------------------
// данные за текущий час
$result = mysql_query("SELECT count,host FROM count_24 WHERE hour=$hour AND date=$today AND uid=$uid");
$row=mysql_fetch_row($result);
// поверка наличия записи в базе
if (empty($row[0]))
{
	$res = mysql_query("SELECT count(*) FROM count_24 WHERE uid=$uid");
	$data = mysql_fetch_row($res);
	$count_rows = $data[0];
	if ($count_rows >= 24) @mysql_query("DELETE FROM count_24 WHERE uid=$uid ORDER BY id ASC LIMIT 1;");
	@mysql_query("INSERT INTO count_24 VALUES ('',$uid,$today,$hour,0,0);");
	$hour_count = 0;
	$hour_host = 0;
}else
	{
		$hour_count = $row[0];
		$hour_host = $row[1];
	}
$hour_count++;
// --------- хосты
// чтение текущего ip хита из базы
$result = mysql_query("SELECT ip FROM hits_ip WHERE (ip='$ip' AND ua='$ua') AND uid=$uid");
$row=mysql_fetch_row($result);
// если адрес отсутствует, плюсуем хост
if(empty($row[0])){
    $hour_host++;
}
// сохранение посещения
@mysql_query("UPDATE count_24 SET count=$hour_count,host=$hour_host WHERE hour=$hour AND date=$today AND uid=$uid");
// за сегодня
$result = mysql_query("SELECT sum(count),sum(host) FROM count_24 WHERE date=$today AND uid=$uid");
$row = mysql_fetch_row($result);
$count_today = $row[0];
$host_today = $row[1];
// ---------------------------- посещения за месяц --------------------
$today = date("Ym");
// данные за текущий месяц
$result = mysql_query("SELECT count,host FROM months WHERE date=$today AND uid=$uid");
$row=mysql_fetch_row($result);
// поверка наличия записи в базе
if (empty($row[0]))
{
	@mysql_query("INSERT INTO months VALUES ('',$uid,$today,0,0);");
	$this_month_count = 0;
	$this_month_host = 0;
}else{
		$this_month_count = $row[0];
		$this_month_host = $row[1];
	}
$this_month_count++;
// --------- хосты
// чтение текущего ip хита из базы
$result = mysql_query("SELECT ip FROM hits_ip WHERE ip='$ip' AND ua='$ua' AND uid=$uid");
$row=mysql_fetch_row($result);
// если адрес отсутствует, плюсуем хост
if(empty($row[0])){
    $this_month_host++;
}
// сохранение посещения
@mysql_query("UPDATE months SET count=$this_month_count,host=$this_month_host WHERE date=$today AND uid=$uid");

//-------------------------- недельная статистика----------------
$week_day = date("w");
$today = date("Ymd");
// получаем дату обнуления недельной статистики
$result = mysql_query("SELECT next_mon FROM weeks WHERE uid=$uid ORDER BY id ASC LIMIT 1");
$row=mysql_fetch_row($result);
if (empty($row[0]))
{
	// расчитываем дату обнуления
    $dayNext =$week_day + 7;
    if ($dayNext > 7){
        $dayNext-=7;
    }
    $cntDay=8-$dayNext;
    $nextMonday=date("Ymd",mktime(0,0,0,date("m"),date("d")+$cntDay));
}
else $nextMonday = $row[0];
// если сегодня дата обнуления, обнуляем недельную статистику, и расчитываем след дату обнуления
if ($today >= $nextMonday)
{
	// расчитываем след дату обнуления
    $dayNext =$week_day + 7;
    if ($dayNext > 7){
        $dayNext-=7;
    }
    $cntDay=8-$dayNext;
    $nextMonday=date("Ymd",mktime(0,0,0,date("m"),date("d")+$cntDay));
    // обнуляем посещения за прошедшую неделю
    @mysql_query("DELETE FROM weeks WHERE uid=$uid");
}
// получаем данные за текущий день недели
$result = mysql_query("SELECT count,host FROM weeks WHERE day_week=$week_day AND uid=$uid LIMIT 1");
$row=mysql_fetch_row($result);
if (empty($row[0]))
{
	// расчитываем дату обнуления
    $dayNext =$week_day + 7;
    if ($dayNext > 7){
        $dayNext-=7;
    }
    $cntDay=8-$dayNext;
    $nextMonday=date("Ymd",mktime(0,0,0,date("m"),date("d")+$cntDay));
    @mysql_query("INSERT INTO weeks VALUES ('',$uid,$nextMonday,$today,$week_day,0,0)");
    $week_day_count = 0;
    $week_day_host = 0;
} else{
		$week_day_count = $row[0];
		$week_day_host = $row[1];
	}
$week_day_count++;
// --------- хосты
// чтение текущего ip хита из базы
$result = mysql_query("SELECT ip FROM hits_ip WHERE ip='$ip' AND ua='$ua' AND uid=$uid");
$row=mysql_fetch_row($result);
// если адрес отсутствует, плюсуем хост
if(empty($row[0])){
    $week_day_host++;
}
// сохранение посещения
@mysql_query("UPDATE weeks SET count=$week_day_count,host=$week_day_host WHERE day_week=$week_day AND uid=$uid LIMIT 1");

// ------------------------------- онлайн / уникальные посетители (хосты) -----------------------------
$today = date("Ymd");
// извлекаем время последней записи в счетчик онлайн
$result = mysql_query("SELECT time FROM online_time WHERE uid=$uid");
$row=mysql_fetch_row($result);
// время сейчас
$now=date("ymdHi");
// если время отсутствует, запоминаем
if(empty($row[0])){
        @mysql_query("INSERT INTO online_time VALUES ($uid,'$now')");
        $row[0]=$now;
}
// удаляем записи ip старее n минут
if($now-$row[0] >= 45){
     @mysql_query("DELETE FROM online_ip WHERE uid=$uid");
     @mysql_query("UPDATE online_time SET time = '$now' WHERE uid=$uid");
}

// --------- онлайн 
$sql = "SELECT ip FROM online_ip WHERE ip='$ip' AND uid=$uid";
$result = mysql_query($sql);
$row=mysql_fetch_row($result);
// если адрес отсутствует, записываем
if(empty($row[0])){
    mysql_query("INSERT INTO online_ip VALUES ($uid,'$ip')");
}
// --------- хосты
// чтение текущего ip хита из базы
$result = mysql_query("SELECT ip FROM hits_ip WHERE (ip='$ip' AND ua='$ua') AND uid=$uid");
$row=mysql_fetch_row($result);
// если адрес отсутствует, записываем
if(empty($row[0])){
    mysql_query("INSERT INTO hits_ip VALUES ($uid,'$ip','$ua')");
}
// подсчитываем онлайн посетителей
		$result = mysql_query("SELECT count(ip) FROM online_ip WHERE uid=$uid");
		$row=mysql_fetch_row($result);
		$online=(int)$row[0];
// за 24 часа
		$today = date("Ymd");
		$hour = date("H");
		$result = mysql_query("SELECT sum(count) FROM count_24 WHERE (date=$today-1 AND hour>$hour) OR (date=$today AND hour<=$hour) AND uid=$uid");
		$row = mysql_fetch_row($result);
		$count_24 = (int)$row[0];
// -----------------------Всего---------------------------
		$result = mysql_query("SELECT sum(count) FROM months WHERE uid=$uid");
		$row=mysql_fetch_row($result);
		$all_count = (int)$row[0];
/*---------------
$count_today  - хиты
$host_today  - хосты
$online - онлайн
$count_24 - за 24 часа
$all_count - всего
-----------------*/
// вывод информации
$result = mysql_query("SELECT type FROM users WHERE uid=$uid");
$type=mysql_fetch_row($result);
$result = mysql_query("SELECT typeStat FROM users WHERE uid=$uid");
$typeStat=mysql_fetch_row($result);

$image=$type[0];
if($type[0]==2 or $type[0]==3){
        $image.=$typeStat[0];
}
$img = @imageCreateFromGIF("img/".$image.".gif");
$color = imagecolorallocate($img, 255,255,255);
// полный
if($image==1){
$x1 = (ImageSX($img) - 5*strlen("$count_today")-3);
$x2 = (ImageSX($img) - 5*strlen("$host_today")-3);
$x3 = (ImageSX($img) - 5*strlen("$online")-3);
$x4 = (ImageSX($img) - 5*strlen("$count_24")-3);
$x5 = (ImageSX($img) - 5*strlen("$all_count")-3);
$y = 8;
imageString($img, 1, $x1, $y,"$count_today", $color);
imageString($img, 1, $x2, $y+8,"$host_today", $color);
imageString($img, 1, $x3, $y+15,"$online", $color);
imageString($img, 1, $x4, $y+23,"$count_24", $color);
imageString($img, 1, $x5, $y+31,"$all_count", $color);
}
// средний 1
if($image==21){
$x2 = (ImageSX($img) - 5*strlen("$host_today")-3);
$x3 = (ImageSX($img) - 5*strlen("$count_today")-3);
$x4 = (ImageSX($img) - 5*strlen("$all_count")-3);
$y = 8;
imageString($img, 1, $x2, $y+6,"$host_today", $color);
imageString($img, 1, $x3, $y+14,"$count_today", $color);
imageString($img, 1, $x4, $y+23,"$all_count", $color);
}
// средний 2
if($image==22){
$x2 = (ImageSX($img) - 5*strlen("$count_today")-3);
$x1 = (ImageSX($img) - 5*strlen("$host_today")-3);
$x3 = (ImageSX($img) - 5*strlen("$all_count")-3);
$y = 8;
imageString($img, 1, $x2, $y,"$count_today", $color);
imageString($img, 1, $x1, $y+8,"$host_today", $color);
imageString($img, 1, $x3, $y+15,"$all_count", $color);
}
// средний 3
if($image==23){
$x2 = (ImageSX($img) - 5*strlen("$count_today")-3);
$x1 = (ImageSX($img) - 5*strlen("$host_today")-3);
$x3 = (ImageSX($img) - 5*strlen("$count_24")-3);
$y = 8;
imageString($img, 1, $x2, $y,"$count_today", $color);
imageString($img, 1, $x1, $y+8,"$host_today", $color);
imageString($img, 1, $x3, $y+15,"$count_24", $color);
}
// маленький 1
if($image==31){
$x1 = (ImageSX($img) - 5*strlen("$count_today")-3);
$x2 = (ImageSX($img) - 5*strlen("$all_count")-3);
$y = 8;
imageString($img, 1, $x1, $y,"$count_today", $color);
imageString($img, 1, $x2, $y+8,"$all_count", $color);
}
// маленький 2
if($image==32){
$x1 = (ImageSX($img) - 5*strlen("$count_today")-3);
$x2 = (ImageSX($img) - 5*strlen("$host_today")-3);
$y = 8;
imageString($img, 1, $x1, $y,"$count_today", $color);
imageString($img, 1, $x2, $y+8,"$host_today", $color);
}
// маленький 3
if($image==33){
$x1 = (ImageSX($img) - 5*strlen("$count_today")-3);
$x2 = (ImageSX($img) - 5*strlen("$online")-3);
$y = 8;
imageString($img, 1, $x1, $y,"$count_today", $color);
imageString($img, 1, $x2, $y+8,"$online", $color);
}
// микро
if($image==4){
$x1 = (ImageSX($img) - 5*strlen("$count_today")-3);
$y = 1;
imageString($img, 1, $x1, $y,"$count_today", $color);
}
Header("Content-type: image/gif");
ImageGIF($img);
ImageDestroy($img);


?>