PageRenderTime 60ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 1ms

/chilistats/counter.php

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