Просмотр файла reiting/count.php

Размер файла: 11.55Kb
  1. <?php
  2. header("Cache-Control: no-cache, must-revalidate");
  3. header("Pragma: no-cache");
  4. @include "./config.php";
  5.  
  6. //проверка ввода id
  7. if (empty($_GET['uid'])) exit;
  8. $uid=$_GET['uid'];
  9.  
  10. // проверка существования учетной записи
  11. $result = mysql_query("SELECT link FROM users WHERE uid=$uid");
  12. $row=mysql_fetch_row($result);
  13. if (empty($row[0])) exit;
  14.  
  15. // получаем ip посетителя
  16. $ip=$REMOTE_ADDR;
  17. $ua=$HTTP_USER_AGENT;
  18.  
  19. // текущий час, день недели и дата
  20. $hour = date("H");
  21. $day = date("d");
  22. $today = date("Ymd");
  23. // ------------------------- обнулялка хостов ----------------------------
  24. // извлекаем время последней записи в счетчик хостов
  25. $result = mysql_query("SELECT time FROM hits_time WHERE uid=$uid");
  26. $row=mysql_fetch_row($result);
  27. // если время отсутствует, запоминаем
  28. if(empty($row[0])){
  29. @mysql_query("INSERT INTO hits_time VALUES ($uid,$today)");
  30. $reset_time = $today;
  31. } else $reset_time = $row[0];
  32. // удаляем записи ip старее суток
  33. if($today != $reset_time){
  34. @mysql_query("DELETE FROM hits_ip WHERE uid=$uid");
  35. @mysql_query("UPDATE hits_time SET time = $today WHERE uid=$uid");
  36. }
  37. //------------------------------ часовая статистика -------------------------
  38. // данные за текущий час
  39. $result = mysql_query("SELECT count,host FROM count_24 WHERE hour=$hour AND date=$today AND uid=$uid");
  40. $row=mysql_fetch_row($result);
  41. // поверка наличия записи в базе
  42. if (empty($row[0]))
  43. {
  44. $res = mysql_query("SELECT count(*) FROM count_24 WHERE uid=$uid");
  45. $data = mysql_fetch_row($res);
  46. $count_rows = $data[0];
  47. if ($count_rows >= 24) @mysql_query("DELETE FROM count_24 WHERE uid=$uid ORDER BY id ASC LIMIT 1;");
  48. @mysql_query("INSERT INTO count_24 VALUES ('',$uid,$today,$hour,0,0);");
  49. $hour_count = 0;
  50. $hour_host = 0;
  51. }else
  52. {
  53. $hour_count = $row[0];
  54. $hour_host = $row[1];
  55. }
  56. $hour_count++;
  57. // --------- хосты
  58. // чтение текущего ip хита из базы
  59. $result = mysql_query("SELECT ip FROM hits_ip WHERE (ip='$ip' AND ua='$ua') AND uid=$uid");
  60. $row=mysql_fetch_row($result);
  61. // если адрес отсутствует, плюсуем хост
  62. if(empty($row[0])){
  63. $hour_host++;
  64. }
  65. // сохранение посещения
  66. @mysql_query("UPDATE count_24 SET count=$hour_count,host=$hour_host WHERE hour=$hour AND date=$today AND uid=$uid");
  67. // за сегодня
  68. $result = mysql_query("SELECT sum(count),sum(host) FROM count_24 WHERE date=$today AND uid=$uid");
  69. $row = mysql_fetch_row($result);
  70. $count_today = $row[0];
  71. $host_today = $row[1];
  72. // ---------------------------- посещения за месяц --------------------
  73. $today = date("Ym");
  74. // данные за текущий месяц
  75. $result = mysql_query("SELECT count,host FROM months WHERE date=$today AND uid=$uid");
  76. $row=mysql_fetch_row($result);
  77. // поверка наличия записи в базе
  78. if (empty($row[0]))
  79. {
  80. @mysql_query("INSERT INTO months VALUES ('',$uid,$today,0,0);");
  81. $this_month_count = 0;
  82. $this_month_host = 0;
  83. }else{
  84. $this_month_count = $row[0];
  85. $this_month_host = $row[1];
  86. }
  87. $this_month_count++;
  88. // --------- хосты
  89. // чтение текущего ip хита из базы
  90. $result = mysql_query("SELECT ip FROM hits_ip WHERE ip='$ip' AND ua='$ua' AND uid=$uid");
  91. $row=mysql_fetch_row($result);
  92. // если адрес отсутствует, плюсуем хост
  93. if(empty($row[0])){
  94. $this_month_host++;
  95. }
  96. // сохранение посещения
  97. @mysql_query("UPDATE months SET count=$this_month_count,host=$this_month_host WHERE date=$today AND uid=$uid");
  98.  
  99. //-------------------------- недельная статистика----------------
  100. $week_day = date("w");
  101. $today = date("Ymd");
  102. // получаем дату обнуления недельной статистики
  103. $result = mysql_query("SELECT next_mon FROM weeks WHERE uid=$uid ORDER BY id ASC LIMIT 1");
  104. $row=mysql_fetch_row($result);
  105. if (empty($row[0]))
  106. {
  107. // расчитываем дату обнуления
  108. $dayNext =$week_day + 7;
  109. if ($dayNext > 7){
  110. $dayNext-=7;
  111. }
  112. $cntDay=8-$dayNext;
  113. $nextMonday=date("Ymd",mktime(0,0,0,date("m"),date("d")+$cntDay));
  114. }
  115. else $nextMonday = $row[0];
  116. // если сегодня дата обнуления, обнуляем недельную статистику, и расчитываем след дату обнуления
  117. if ($today >= $nextMonday)
  118. {
  119. // расчитываем след дату обнуления
  120. $dayNext =$week_day + 7;
  121. if ($dayNext > 7){
  122. $dayNext-=7;
  123. }
  124. $cntDay=8-$dayNext;
  125. $nextMonday=date("Ymd",mktime(0,0,0,date("m"),date("d")+$cntDay));
  126. // обнуляем посещения за прошедшую неделю
  127. @mysql_query("DELETE FROM weeks WHERE uid=$uid");
  128. }
  129. // получаем данные за текущий день недели
  130. $result = mysql_query("SELECT count,host FROM weeks WHERE day_week=$week_day AND uid=$uid LIMIT 1");
  131. $row=mysql_fetch_row($result);
  132. if (empty($row[0]))
  133. {
  134. // расчитываем дату обнуления
  135. $dayNext =$week_day + 7;
  136. if ($dayNext > 7){
  137. $dayNext-=7;
  138. }
  139. $cntDay=8-$dayNext;
  140. $nextMonday=date("Ymd",mktime(0,0,0,date("m"),date("d")+$cntDay));
  141. @mysql_query("INSERT INTO weeks VALUES ('',$uid,$nextMonday,$today,$week_day,0,0)");
  142. $week_day_count = 0;
  143. $week_day_host = 0;
  144. } else{
  145. $week_day_count = $row[0];
  146. $week_day_host = $row[1];
  147. }
  148. $week_day_count++;
  149. // --------- хосты
  150. // чтение текущего ip хита из базы
  151. $result = mysql_query("SELECT ip FROM hits_ip WHERE ip='$ip' AND ua='$ua' AND uid=$uid");
  152. $row=mysql_fetch_row($result);
  153. // если адрес отсутствует, плюсуем хост
  154. if(empty($row[0])){
  155. $week_day_host++;
  156. }
  157. // сохранение посещения
  158. @mysql_query("UPDATE weeks SET count=$week_day_count,host=$week_day_host WHERE day_week=$week_day AND uid=$uid LIMIT 1");
  159.  
  160. // ------------------------------- онлайн / уникальные посетители (хосты) -----------------------------
  161. $today = date("Ymd");
  162. // извлекаем время последней записи в счетчик онлайн
  163. $result = mysql_query("SELECT time FROM online_time WHERE uid=$uid");
  164. $row=mysql_fetch_row($result);
  165. // время сейчас
  166. $now=date("ymdHi");
  167. // если время отсутствует, запоминаем
  168. if(empty($row[0])){
  169. @mysql_query("INSERT INTO online_time VALUES ($uid,'$now')");
  170. $row[0]=$now;
  171. }
  172. // удаляем записи ip старее n минут
  173. if($now-$row[0] >= 45){
  174. @mysql_query("DELETE FROM online_ip WHERE uid=$uid");
  175. @mysql_query("UPDATE online_time SET time = '$now' WHERE uid=$uid");
  176. }
  177.  
  178. // --------- онлайн
  179. $sql = "SELECT ip FROM online_ip WHERE ip='$ip' AND uid=$uid";
  180. $result = mysql_query($sql);
  181. $row=mysql_fetch_row($result);
  182. // если адрес отсутствует, записываем
  183. if(empty($row[0])){
  184. mysql_query("INSERT INTO online_ip VALUES ($uid,'$ip')");
  185. }
  186. // --------- хосты
  187. // чтение текущего ip хита из базы
  188. $result = mysql_query("SELECT ip FROM hits_ip WHERE (ip='$ip' AND ua='$ua') AND uid=$uid");
  189. $row=mysql_fetch_row($result);
  190. // если адрес отсутствует, записываем
  191. if(empty($row[0])){
  192. mysql_query("INSERT INTO hits_ip VALUES ($uid,'$ip','$ua')");
  193. }
  194. // подсчитываем онлайн посетителей
  195. $result = mysql_query("SELECT count(ip) FROM online_ip WHERE uid=$uid");
  196. $row=mysql_fetch_row($result);
  197. $online=(int)$row[0];
  198. // за 24 часа
  199. $today = date("Ymd");
  200. $hour = date("H");
  201. $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");
  202. $row = mysql_fetch_row($result);
  203. $count_24 = (int)$row[0];
  204. // -----------------------Всего---------------------------
  205. $result = mysql_query("SELECT sum(count) FROM months WHERE uid=$uid");
  206. $row=mysql_fetch_row($result);
  207. $all_count = (int)$row[0];
  208. /*---------------
  209. $count_today - хиты
  210. $host_today - хосты
  211. $online - онлайн
  212. $count_24 - за 24 часа
  213. $all_count - всего
  214. -----------------*/
  215. // вывод информации
  216. $result = mysql_query("SELECT type FROM users WHERE uid=$uid");
  217. $type=mysql_fetch_row($result);
  218. $result = mysql_query("SELECT typeStat FROM users WHERE uid=$uid");
  219. $typeStat=mysql_fetch_row($result);
  220.  
  221. $image=$type[0];
  222. if($type[0]==2 or $type[0]==3){
  223. $image.=$typeStat[0];
  224. }
  225. $img = @imageCreateFromGIF("img/".$image.".gif");
  226. $color = imagecolorallocate($img, 255,255,255);
  227. // полный
  228. if($image==1){
  229. $x1 = (ImageSX($img) - 5*strlen("$count_today")-3);
  230. $x2 = (ImageSX($img) - 5*strlen("$host_today")-3);
  231. $x3 = (ImageSX($img) - 5*strlen("$online")-3);
  232. $x4 = (ImageSX($img) - 5*strlen("$count_24")-3);
  233. $x5 = (ImageSX($img) - 5*strlen("$all_count")-3);
  234. $y = 8;
  235. imageString($img, 1, $x1, $y,"$count_today", $color);
  236. imageString($img, 1, $x2, $y+8,"$host_today", $color);
  237. imageString($img, 1, $x3, $y+15,"$online", $color);
  238. imageString($img, 1, $x4, $y+23,"$count_24", $color);
  239. imageString($img, 1, $x5, $y+31,"$all_count", $color);
  240. }
  241. // средний 1
  242. if($image==21){
  243. $x2 = (ImageSX($img) - 5*strlen("$host_today")-3);
  244. $x3 = (ImageSX($img) - 5*strlen("$count_today")-3);
  245. $x4 = (ImageSX($img) - 5*strlen("$all_count")-3);
  246. $y = 8;
  247. imageString($img, 1, $x2, $y+6,"$host_today", $color);
  248. imageString($img, 1, $x3, $y+14,"$count_today", $color);
  249. imageString($img, 1, $x4, $y+23,"$all_count", $color);
  250. }
  251. // средний 2
  252. if($image==22){
  253. $x2 = (ImageSX($img) - 5*strlen("$count_today")-3);
  254. $x1 = (ImageSX($img) - 5*strlen("$host_today")-3);
  255. $x3 = (ImageSX($img) - 5*strlen("$all_count")-3);
  256. $y = 8;
  257. imageString($img, 1, $x2, $y,"$count_today", $color);
  258. imageString($img, 1, $x1, $y+8,"$host_today", $color);
  259. imageString($img, 1, $x3, $y+15,"$all_count", $color);
  260. }
  261. // средний 3
  262. if($image==23){
  263. $x2 = (ImageSX($img) - 5*strlen("$count_today")-3);
  264. $x1 = (ImageSX($img) - 5*strlen("$host_today")-3);
  265. $x3 = (ImageSX($img) - 5*strlen("$count_24")-3);
  266. $y = 8;
  267. imageString($img, 1, $x2, $y,"$count_today", $color);
  268. imageString($img, 1, $x1, $y+8,"$host_today", $color);
  269. imageString($img, 1, $x3, $y+15,"$count_24", $color);
  270. }
  271. // маленький 1
  272. if($image==31){
  273. $x1 = (ImageSX($img) - 5*strlen("$count_today")-3);
  274. $x2 = (ImageSX($img) - 5*strlen("$all_count")-3);
  275. $y = 8;
  276. imageString($img, 1, $x1, $y,"$count_today", $color);
  277. imageString($img, 1, $x2, $y+8,"$all_count", $color);
  278. }
  279. // маленький 2
  280. if($image==32){
  281. $x1 = (ImageSX($img) - 5*strlen("$count_today")-3);
  282. $x2 = (ImageSX($img) - 5*strlen("$host_today")-3);
  283. $y = 8;
  284. imageString($img, 1, $x1, $y,"$count_today", $color);
  285. imageString($img, 1, $x2, $y+8,"$host_today", $color);
  286. }
  287. // маленький 3
  288. if($image==33){
  289. $x1 = (ImageSX($img) - 5*strlen("$count_today")-3);
  290. $x2 = (ImageSX($img) - 5*strlen("$online")-3);
  291. $y = 8;
  292. imageString($img, 1, $x1, $y,"$count_today", $color);
  293. imageString($img, 1, $x2, $y+8,"$online", $color);
  294. }
  295. // микро
  296. if($image==4){
  297. $x1 = (ImageSX($img) - 5*strlen("$count_today")-3);
  298. $y = 1;
  299. imageString($img, 1, $x1, $y,"$count_today", $color);
  300. }
  301. Header("Content-type: image/gif");
  302. ImageGIF($img);
  303. ImageDestroy($img);
  304.  
  305.  
  306. ?>