PageRenderTime 44ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/cosas/chilistats/counter.php

https://bitbucket.org/weddcam/develop_weddcam
PHP | 302 lines | 212 code | 28 blank | 62 comment | 47 complexity | 48c36d0a7c7ca40fd3d75fbe3055f6cb MD5 | raw file
Possible License(s): BSD-3-Clause, GPL-2.0, MIT, LGPL-3.0, LGPL-2.1
  1. <?PHP
  2. /*
  3. --------------------------------------------------------
  4. ChiliStats der neue Statistik Counter
  5. basierend auf dem Statistik Counter von pawlita.de
  6. -------------------------------------------------------
  7. Das Skript unterliegt dem Urheberschutz Gesetz. Alle Rechte und
  8. copyrights liegen bei dem Autor:
  9. Adam Pawlita, http://www.chiliscripts.com
  10. Dies Skript darf frei verwendet und weitergegeben werden, solange
  11. die angegebenen Copyrightvermerke in allen Teilen des Scripts vor-
  12. handen bleiben. Für den fehlerfreien Betrieb, oder Schäden die durch
  13. den Betrieb dieses Skriptes entstehen, übernimmt der Autor keinerlei
  14. Gewährleistung. Die Inbetriebnahme erfolgt in jedem Falle
  15. auf eigenes Risiko des Betreibers.
  16. -------------------------------------------------------
  17. */
  18. require_once('config.php');
  19. //
  20. // initialization and visitor Information
  21. //
  22. // Date Time
  23. $time=time();
  24. $day=date("Y.m.d",$time); // YYYY.MM.DD
  25. $month=date("Y.m",$time); // YYYY.MM
  26. // IP adress
  27. $ip=$_SERVER['REMOTE_ADDR'];
  28. // Get Referrer and Page
  29. if ($_GET["ref"] <> "" )
  30. {
  31. // from javascript
  32. $referer = $_GET["ref"];
  33. $page = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_PATH);
  34. }
  35. else
  36. {
  37. // from php
  38. $referer=$_SERVER['HTTP_REFERER'];
  39. $page=$_SERVER['PHP_SELF']; // with include via php
  40. }
  41. // cleanup
  42. if (basename($page) == basename(__FILE__)) $page="" ; // count not counter.php
  43. $server_host=$_SERVER["HTTP_HOST"]; // Server Host
  44. if (substr($server_host,0,4) == "www.") $server_host=substr($server_host,4); // Server Host without www.
  45. $referer_host=parse_url($referer, PHP_URL_HOST); // Referrer Host
  46. if (substr($referer_host,0,4) == "www.") $referer_host=substr($referer_host,4); // Referer Host without www.
  47. // adjust search engines
  48. if (strstr($referer_host, "google."))
  49. {
  50. $referer_query=parse_url($referer, PHP_URL_QUERY);
  51. $referer_query.="&";
  52. preg_match('/q=(.*)&/UiS', $referer_query, $keys);
  53. $keyword=urldecode($keys[1]); // These are the search terms
  54. $referer_host="Google"; // adjust host
  55. }
  56. if (strstr($referer_host, "yahoo."))
  57. {
  58. $referer_query=parse_url($referer, PHP_URL_QUERY);
  59. $referer_query.="&";
  60. preg_match('/p=(.*)&/UiS', $referer_query, $keys);
  61. $keyword=urldecode($keys[1]); // These are the search terms
  62. $referer_host="Yahoo"; // adjust host
  63. }
  64. if (strstr($referer_host, "bing."))
  65. {
  66. $referer_query=parse_url($referer, PHP_URL_QUERY);
  67. $referer_query.="&";
  68. preg_match('/q=(.*)&/UiS', $referer_query, $keys);
  69. $keyword=urldecode($keys[1]); // These are the search terms
  70. $referer_host="Bing"; // adjust host
  71. }
  72. // Language
  73. $language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);
  74. //
  75. // Counter
  76. //
  77. // delete old IPs
  78. $anfangGestern = mktime(0, 0, 0, date(n), date(j), date(Y)) - 48*60*60 ; // 48*60*60 => after 48 hours
  79. $delete=mysql_query("delete from ".$db_prefix."IPs where time<'$anfangGestern'");
  80. if (!$delete) {echo"Es ist ein Fehler aufgetreten, möglicherweise ist die Tabelle nicht angelegt."; exit;}
  81. // delete old page,referrer,language and keywords
  82. $old_day=date("Y.m.d",mktime(0, 0, 0, date("n"), date("j")-$oldentries, date("Y"))); // delete older than $oldentries(config.php) days
  83. $delete=mysql_query("delete from ".$db_prefix."Page where day<='$old_day'");
  84. $delete=mysql_query("delete from ".$db_prefix."Referer where day<='$old_day'");
  85. $delete=mysql_query("delete from ".$db_prefix."Keyword where day<='$old_day'");
  86. $delete=mysql_query("delete from ".$db_prefix."Language where day<='$old_day'");
  87. if (!$delete) {echo"Es ist ein Fehler aufgetreten, möglicherweise ist die Tabelle nicht angelegt."; exit;}
  88. // insert a new day
  89. $neuerTag=mysql_query("select id from ".$db_prefix."Day where day='$day'");
  90. if (!$neuerTag) {echo"Es ist ein Fehler aufgetreten, möglicherweise ist die Tabelle nicht angelegt."; exit;}
  91. if (mysql_num_rows($neuerTag)==0)
  92. {
  93. mysql_query("insert into ".$db_prefix."Day (day, user, view) values ('$day', '0', '0')");
  94. }
  95. // check reload and set online time
  96. $newuser=0;
  97. $oldreload = $time-$reload;
  98. $gesperrt=mysql_query("select id from ".$db_prefix."IPs where ip='$ip' AND time>'$oldreload' order by id desc limit 1");
  99. if (!$gesperrt) {echo"Es ist ein Fehler aufgetreten, möglicherweise ist die Tabelle nicht angelegt."; exit;}
  100. if (mysql_num_rows($gesperrt)==0)
  101. {
  102. // new visitor
  103. $newuser=1;
  104. mysql_query("insert into ".$db_prefix."IPs (ip, time, online) values ('$ip', '$time', '$time')");
  105. mysql_query("update ".$db_prefix."Day set user=user+1, view=view+1 where day='$day'");
  106. }
  107. else
  108. {
  109. // reload visitor
  110. $gesperrtID=mysql_result($gesperrt,0,0);
  111. mysql_query("update ".$db_prefix."IPs set online='$time' where id='$gesperrtID'");
  112. mysql_query("update ".$db_prefix."Day set view=view+1 where day='$day'");
  113. }
  114. // Page
  115. if($page <> "") {
  116. $ergebnis = mysql_query("SELECT id from ".$db_prefix."Page WHERE page='$page' AND day='$day'");
  117. if (!$ergebnis) {echo"Es ist ein Fehler aufgetreten, möglicherweise ist die Tabelle nicht angelegt."; exit;}
  118. if (mysql_num_rows($ergebnis)==0)
  119. {
  120. mysql_query("insert into ".$db_prefix."Page (day, page, view) values ('$day', '$page', '1')");
  121. }
  122. else
  123. {
  124. $pageid=mysql_result($ergebnis,0,0);
  125. mysql_query("update ".$db_prefix."Page set view=view+1 where id='$pageid'");
  126. }
  127. }
  128. // Referer
  129. if(stristr($server_host, $referer_host) === FALSE AND $referer_host<>"" AND $newuser == 1) {
  130. $ergebnis = mysql_query("SELECT id from ".$db_prefix."Referer WHERE referer='$referer_host' AND day='$day'");
  131. if (!$ergebnis) {echo"Es ist ein Fehler aufgetreten, möglicherweise ist die Tabelle nicht angelegt."; exit;}
  132. if (mysql_num_rows($ergebnis)==0)
  133. {
  134. mysql_query("insert into ".$db_prefix."Referer (day, referer, view) values ('$day', '$referer_host', '1')");
  135. }
  136. else
  137. {
  138. $refererid=mysql_result($ergebnis,0,0);
  139. mysql_query("update ".$db_prefix."Referer set view=view+1 where id='$refererid'");
  140. }
  141. }
  142. // keywords
  143. if($keyword<>"" AND $newuser == 1) {
  144. $ergebnis = mysql_query("SELECT id from ".$db_prefix."Keyword WHERE keyword='$keyword' AND day='$day'");
  145. if (!$ergebnis) {echo"Es ist ein Fehler aufgetreten, möglicherweise ist die Tabelle nicht angelegt."; exit;}
  146. if (mysql_num_rows($ergebnis)==0)
  147. {
  148. mysql_query("insert into ".$db_prefix."Keyword (day, keyword, view) values ('$day', '$keyword', '1')");
  149. }
  150. else
  151. {
  152. $keywordid=mysql_result($ergebnis,0,0);
  153. mysql_query("update ".$db_prefix."Keyword set view=view+1 where id='$keywordid'");
  154. }
  155. }
  156. // Language
  157. if($language<>"" AND $newuser == 1) {
  158. $ergebnis = mysql_query("SELECT id from ".$db_prefix."Language WHERE language='$language'");
  159. if (!$ergebnis) {echo"Es ist ein Fehler aufgetreten, möglicherweise ist die Tabelle nicht angelegt."; exit;}
  160. if (mysql_num_rows($ergebnis)==0)
  161. {
  162. mysql_query("insert into ".$db_prefix."Language (day, language, view) values ('$day', '$language', '1')");
  163. }
  164. else
  165. {
  166. $languageid=mysql_result($ergebnis,0,0);
  167. mysql_query("update ".$db_prefix."Language set view=view+1 where id='$languageid'");
  168. }
  169. }
  170. //
  171. // Generate Image
  172. //
  173. // Get Value from DB
  174. if ($show == "last24h")
  175. {
  176. // Last24h
  177. $islast=$time-24*60*60;
  178. $abfrage=mysql_query("select count(id) from ".$db_prefix."IPs where time>='$islast'");
  179. $value=mysql_result($abfrage,0,0);
  180. $title="Last 24 hours";
  181. mysql_free_result($abfrage);
  182. }
  183. else
  184. {
  185. // Totally Visitors
  186. $abfrage=mysql_query("select sum(user) from ".$db_prefix."Day");
  187. $value=mysql_result($abfrage,0,0);
  188. $title="Totally Visitors";
  189. mysql_free_result($abfrage);
  190. }
  191. // short value
  192. if ( $value > 999 ) { $value = $value / 1000; $einheit = "k"; }
  193. if ($value > 999) { $value = $value / 1000; $einheit = "m"; }
  194. if ( $value > 999 ) { $value = ">999"; $einheit = "m"; }
  195. else {
  196. if ( $value >=10) $value=round($value,0);
  197. else $value=round($value,1);}
  198. $value.=$einheit;
  199. // Variables
  200. $title_font="OpenSans-Regular.ttf";
  201. $value_font="OpenSans-Bold.ttf";
  202. if ($size == "small")
  203. {
  204. $width=90;
  205. $height=20;
  206. $title_font_size = 8;
  207. $value_font_size = 9;
  208. $title_pos_y = 15;
  209. $value_pos_y = 16;
  210. // short title
  211. if ($show == "last24h") {$title="Last24h";}
  212. else {$title="Visitors";}
  213. // left title
  214. $size = imagettfbbox($title_font_size, 0, $title_font, $title);
  215. $titleWidth = $size[2] - $size[0];
  216. $title_pos_x = 8;
  217. // right center value
  218. $size = imagettfbbox($value_font_size, 0, $value_font, $value);
  219. $valueWidth = $size[2] - $size[0];
  220. $space_left = $title_pos_x + $titleWidth;
  221. $value_pos_x = $space_left + ((($width - $space_left) / 2) - ($valueWidth / 2));
  222. }
  223. else
  224. {
  225. $width=90;
  226. $height=55;
  227. $title_font_size = 8;
  228. $value_font_size = 24;
  229. $title_pos_y = 15;
  230. $value_pos_y = 48;
  231. // center title
  232. $size = imagettfbbox($title_font_size, 0, $title_font, $title);
  233. $textWidth = $size[2] - $size[0];
  234. $title_pos_x = ($width / 2) - ($textWidth / 2);
  235. // center value
  236. $size = imagettfbbox($value_font_size, 0, $value_font, $value);
  237. $textWidth = $size[2] - $size[0];
  238. $value_pos_x = ($width / 2) - ($textWidth / 2);
  239. }
  240. // Create a blank image
  241. $im = imagecreatetruecolor($width,$height);
  242. // Colors
  243. if ($style == "light")
  244. {
  245. $bg_color = imagecolorallocatealpha($im, 235,235,235,0);
  246. $title_color = imagecolorallocate($im, 50,50,50);
  247. $value_color = imagecolorallocate($im, 25,25,25);
  248. }
  249. else
  250. {
  251. $bg_color = imagecolorallocatealpha($im, 50,50,50,0);
  252. $title_color = imagecolorallocate($im, 255,255,255);
  253. $value_color = imagecolorallocate($im, 255,255,255);
  254. }
  255. $shadow_color = imagecolorallocatealpha($im, 0,0,0,115);
  256. $red = imagecolorallocate($im, 223,1,1);
  257. // Fill BG color
  258. imagefill($im, 0, 0, $bg_color);
  259. // Red line
  260. imageline($im,0,0,$width,0,$red);
  261. imageline($im,0,1,$width,1,$red);
  262. // title
  263. imagettftext ($im, $title_font_size, 0, $title_pos_x+2, $title_pos_y+2, $shadow_color, $title_font, $title);
  264. imagettftext ($im, $title_font_size, 0, $title_pos_x, $title_pos_y, $title_color, $title_font, $title);
  265. // value
  266. imagettftext ($im, $value_font_size, 0, $value_pos_x+2, $value_pos_y+2, $shadow_color, $value_font, $value);
  267. imagettftext ($im, $value_font_size, 0, $value_pos_x, $value_pos_y, $value_color, $value_font, $value);
  268. // image output
  269. header ("Content-type: image/png");
  270. // create PNG
  271. imagepng($im);
  272. // destroy temp image
  273. imagedestroy($im);
  274. ?>