View file count.php

File size: 11.69Kb
<?php
include('config.php');
include('functions.php');
//проверка  ввода id
if(empty($_GET['uid'])) exit;
$uid=intval($_GET['uid']);
// проверка существования учетной записи
$result=mysql_query("SELECT `link` FROM `top_users` WHERE `uid`='".$uid."';");
$row=mysql_fetch_row($result);
if(empty($row)) exit;
// обновление даты пользование топом
$time_stamp=time();
$day_time=24*60*60;
mysql_query("UPDATE `top_users`	SET `date`='".$time_stamp."' WHERE (`date`+'".$day_time."')<'".$time_stamp."' AND `uid`='".$uid."' LIMIT 1;");
// получаем ip посетителя
$ip=getenv('REMOTE_ADDR');
$ua=htmlspecialchars(getenv('HTTP_USER_AGENT'));
$browser=explode("/",$ua);
$user_browser=(string)$browser[0];
// определение тела и учет в статистике
include('mod_telinfo.php');
// Определение оператора и учет в статистике
include('mod_operators.php');
// текущий час, день недели и дата
$hour=date("H");
$day=date("d");
$today=date("Ymd");
// обнулялка хостов, извлекаем время последней записи в счетчик хостов
$result=mysql_query("SELECT `time` FROM `top_hits_time` WHERE `uid`='".$uid."';");
$row=mysql_fetch_row($result);
// если время отсутствует, запоминаем
if(empty($row))
{
	mysql_query("INSERT INTO `top_hits_time` VALUES ('".$uid."','".$today."');");
	$reset_time=$today;
}
else $reset_time=$row[0];
// удаляем записи ip старее суток
if($today!=$reset_time)
{
	mysql_query("DELETE FROM `top_hits_ip` WHERE `uid`='".$uid."';");
	mysql_query("UPDATE `top_hits_time` SET `time`='".$today."' WHERE `uid`='".$uid."';");
}
// часовая статистика, данные за текущий час
$result=mysql_query("SELECT `count`,`host` FROM `top_count_24` WHERE `hour`='".$hour."' AND `date`='".$today."' AND `uid`='".$uid."';");
$row=mysql_fetch_row($result);
// поверка наличия записи в базе
if(empty($row))
{
	$res=mysql_query("SELECT count(*) FROM `top_count_24` WHERE `uid`='".$uid."';");
	$data=mysql_fetch_row($res);
	$count_rows=$data[0];
	if($count_rows>=24) mysql_query("DELETE FROM `top_count_24` WHERE `uid`='".$uid."' ORDER BY `id` ASC LIMIT 1;");
	mysql_query("INSERT INTO `top_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++;
// посещения за месяц
$today=date("Ym");
// данные за текущий месяц
$result=mysql_query("SELECT `count`,`host` FROM `top_months` WHERE `date`='".$today."' AND `uid`='".$uid."';");
$row=mysql_fetch_row($result);
// поверка наличия записи в базе
if(empty($row))
{
	mysql_query("INSERT INTO `top_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++;
// недельная статистика
$week_day=date("w");
$today=date("Ymd");
// получаем дату обнуления недельной статистики
$result=mysql_query("SELECT `next_mon` FROM `top_weeks` WHERE `uid`='".$uid."' ORDER BY `id` ASC LIMIT 1;");
$row=mysql_fetch_row($result);
if(empty($row))
{
	// расчитываем дату обнуления
	$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 `top_weeks` WHERE `uid`='".$uid."';");
	mysql_query("DELETE FROM `top_operators_stat` WHERE `uid`='".$uid."';");
	// удаление неактивных пользователей
	$time_stamp=time();
	$week_time=7*24*60*60;
	$sql_result=mysql_query("SELECT `uid` FROM `top_users` WHERE (".$time_stamp."- users`.`date`)>'".$week_time."';");
	while($result=mysql_fetch_assoc($sql_result))
	{
		$del_uid=$result['uid'];
		mysql_query("DELETE FROM `top_users` WHERE `uid`='".$del_uid."';");
		mysql_query("DELETE FROM `top_count_24` WHERE `uid`='".$del_uid."';");
		mysql_query("DELETE FROM `top_hits_ip` WHERE `uid`='".$del_uid."';");
		mysql_query("DELETE FROM `top_hits_time` WHERE `uid`='".$del_uid."';");
		mysql_query("DELETE FROM `top_months` WHERE `uid`='".$del_uid."';");
		mysql_query("DELETE FROM `top_online_ip` WHERE `uid`='".$del_uid."';");
		mysql_query("DELETE FROM `top_operators_stat` WHERE `uid`='".$del_uid."';");
		mysql_query("DELETE FROM `top_weeks` WHERE `uid`='".$del_uid."';");
	}
}
// получаем данные за текущий день недели
$result=mysql_query("SELECT `count`,`host` FROM `top_weeks` WHERE `date`='".$today."' AND `day_week`='".$week_day."' AND `uid`='".$uid."' LIMIT 1;");
$row=mysql_fetch_row($result);
if(empty($row))
{
	// расчитываем дату обнуления
	$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 `top_weeks` VALUES ('','".$uid."','".$nextMonday."','".$today."','".$week_day."','0','0','0','0','0','0','0','0','0','0','0','0','0','0','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 `top_hits_ip` WHERE (`ip`='".$ip."' AND `ua`='".$ua."') AND `uid`='".$uid."';");
$row=mysql_fetch_row($result);
// если адрес отсутствует, плюсуем хост
if(empty($row))
{
	// защита от накрутки
	$result=mysql_query("SELECT `ip` FROM `top_hits_ip` WHERE `uid`='".$uid."' ORDER BY `time` DESC LIMIT 1;");
	$row=mysql_fetch_array($result);
	if(empty($row) || ($row['ip']!=$ip))
	{
		$hour_host++;
		$week_day_host++;
		$this_month_host++;
		mysql_query("INSERT INTO `top_hits_ip` VALUES ('".$uid."','".$ip."','".$ua."',".time().");");
	}
}
// сохранение посещения
mysql_query("UPDATE `top_count_24` SET `count`='".$hour_count."',`host`='".$hour_host."' WHERE `hour`='".$hour."' AND `date`='".$today."' AND `uid`='".$uid."';");
mysql_query("UPDATE `top_weeks` SET `count`='".$week_day_count."',`host`='".$week_day_host."' WHERE `date`='".$today."' AND `day_week`='".$week_day."' AND `uid`='".$uid."' LIMIT 1;");
$today=date("Ym");
mysql_query("UPDATE `top_months` SET `count`='".$this_month_count."',`host`='".$this_month_host."' WHERE `date`='".$today."' AND `uid`='".$uid."';");
// за сегодня
$count_today=$week_day_count;
$host_today=$week_day_host;
// онлайн
$today=date("Ymd");
$now=date("ymdHi");
// удаляем записи ip старее online_time минут, del_time время позднее которого записи считаются старыми
$del_time=date("ymdHi",mktime(date("H"),date("i")-$online_time));
mysql_query("DELETE FROM `top_online_ip` WHERE `uid`='".$uid."' AND `time`<='".$del_time."';");
// онлайн 
$result=mysql_query("SELECT `ip` FROM `top_online_ip` WHERE `ip`='".$ip."' AND `uid`='".$uid."';");
$row=mysql_fetch_row($result);
// если адрес отсутствует, записываем
if(empty($row))
{
	mysql_query("INSERT INTO `top_online_ip` VALUES ('".$uid."','".$ip."','".$now."','".$user_browser."');");
}
// подсчитываем онлайн посетителей
$result=mysql_query("SELECT count(`ip`) FROM `top_online_ip` WHERE `uid`='".$uid."';");
$row=mysql_fetch_row($result);
$online=intval($row[0]);
// за 24 часа
$today=date("Ymd");
$hour=date("H");
$result=mysql_query("SELECT sum(`count`) FROM `top_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=intval($row[0]);
// всего
$result=mysql_query("SELECT sum(`count`) FROM `top_months` WHERE `uid`='".$uid."';");
$row=mysql_fetch_row($result);
$all_count=intval($row[0]);
/*---------------
$count_today  - хиты
$host_today  - хосты
$online - онлайн
$count_24 - за 24 часа
$all_count - всего
-----------------*/
// вывод информации
$result=mysql_query("SELECT `type` FROM `top_users` WHERE `uid`='".$uid."';");
$type=mysql_fetch_row($result);
$result=mysql_query("SELECT `typeStat` FROM `top_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,0,0,0);
// полный
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 = 3;
imageString($img, 1, $x1, $y,"$count_today", $color);
imageString($img, 1, $x2, $y+7,"$host_today", $color);
imageString($img, 1, $x3, $y+14,"$online", $color);
imageString($img, 1, $x4, $y+21,"$count_24", $color);
imageString($img, 1, $x5, $y+28,"$all_count", $color);
}
// средний 1
if($image==21){
$x1 = (ImageSX($img) - 5*strlen("$count_today")-3);
$x2 = (ImageSX($img) - 5*strlen("$host_today")-3);
$x3 = (ImageSX($img) - 5*strlen("$online")-3);
$y = 3;
imageString($img, 1, $x1, $y,"$count_today", $color);
imageString($img, 1, $x2, $y+7,"$host_today", $color);
imageString($img, 1, $x3, $y+14,"$online", $color);
}
// средний 2
if($image==22){
$x1 = (ImageSX($img) - 5*strlen("$count_today")-3);
$x2 = (ImageSX($img) - 5*strlen("$host_today")-3);
$x3 = (ImageSX($img) - 5*strlen("$all_count")-3);
$y = 3;
imageString($img, 1, $x1, $y,"$count_today", $color);
imageString($img, 1, $x2, $y+7,"$host_today", $color);
imageString($img, 1, $x3, $y+14,"$all_count", $color);
}
// средний 3
if($image==23){
$x1 = (ImageSX($img) - 5*strlen("$count_today")-3);
$x2 = (ImageSX($img) - 5*strlen("$host_today")-3);
$x3 = (ImageSX($img) - 5*strlen("$count_24")-3);
$y = 3;
imageString($img, 1, $x1, $y,"$count_today", $color);
imageString($img, 1, $x2, $y+7,"$host_today", $color);
imageString($img, 1, $x3, $y+14,"$count_24", $color);
}
// маленький 1
if($image==31){
$x1 = (ImageSX($img) - 5*strlen("$count_today")-3);
$x2 = (ImageSX($img) - 5*strlen("$all_count")-3);
$y = 3;
imageString($img, 1, $x1, $y,"$count_today", $color);
imageString($img, 1, $x2, $y+7,"$all_count", $color);
}
// маленький 2
if($image==32){
$x1 = (ImageSX($img) - 5*strlen("$count_today")-3);
$x2 = (ImageSX($img) - 5*strlen("$host_today")-3);
$y = 3;
imageString($img, 1, $x1, $y,"$count_today", $color);
imageString($img, 1, $x2, $y+7,"$host_today", $color);
}
// маленький 3
if($image==33){
$x1 = (ImageSX($img) - 5*strlen("$count_today")-3);
$x2 = (ImageSX($img) - 5*strlen("$online")-3);
$y = 3;
imageString($img, 1, $x1, $y,"$count_today", $color);
imageString($img, 1, $x2, $y+7,"$online", $color);
}
// микро
if($image==4){
$x1 = (ImageSX($img) - 5*strlen("$count_today")-3);
$y = 3;
imageString($img, 1, $x1, $y,"$count_today", $color);
}
header("Content-type: image/gif");
ImageGIF($img);
ImageDestroy($img);
?>