Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] statystyki do sprawdzenia
Forum PHP.pl > Forum > PHP
Lejto
Mam kod statystyk ale nie wiem czy mnie nie oszukują bo czasem dziwne wyniki mam.
Proszę o sprawdzenie
  1. <?php
  2. /*(c) Lukasz Ogan, 2008 : All Rights Reserved */
  3. $Bots = array(
  4.  'Alexa'  => 'ia_archiver',
  5.  'Ask Jeeves' => 'ask jeeves',
  6.  'Teoma'  => 'teoma',
  7.  'Baidu Spider'  => 'baiduspider',
  8.  'cURL'  => 'curl',
  9.  'GameSpy' => 'gamespyhttp',
  10.  'Googlebot-Image' => 'googlebot-image',
  11.  'Gigabot' => 'gigabot',
  12.  'Googlebot'  => 'googlebot',
  13.  'Grub'  => 'grub',
  14.  'Inktomi Slurp'  => 'slurp',
  15.  'msnbot' => 'msnbot',
  16.  'AltaVista'  => 'scooter',
  17.  'Yahoo!' => 'yahoo!',
  18.  'Lycos'  => 'lycos',
  19.  'Whatuseek' => 'whatuseek',
  20.  );
  21. foreach($Bots as $bot => $designation)
  22. {
  23.  if(eregi($designation, $_SERVER['HTTP_USER_AGENT']))
  24.  $b0t = $b0t . 1;
  25. }
  26. if($b0t=='' or $bot=='0')
  27. {
  28.  
  29.  
  30.  
  31.  
  32. $rok = date("Y");
  33. $miech = date("n")+1;
  34.  
  35. $ostatni = mktime (0,0,0,$miech,0,$rok);
  36. $miesiac = strftime ("%d", $ostatni);
  37.  
  38. define ('TIMEOUT', 20);
  39. $online = time()-(60*TIMEOUT);
  40.  
  41. $m = time()-(24*$miesiac*3600);
  42. $dzis = time()-(24*3600);
  43. $online = time()-600;
  44. $ip = $_SERVER['REMOTE_ADDR'];
  45. $czas = time();
  46.  
  47. $zapyt = "INSERT INTO licznik(ip,data) VALUES('$ip','$czas')"; //dodajemy ip + czas
  48. $sql = mysql_query($zapyt);
  49. if(!$sql) { die ('błąd'); }
  50. $zapyt = "UPDATE licznik2 SET odslon=odslon+1"; //powiększamy liczbę odsłon
  51. mysql_query($zapyt);
  52. $zapyt = "SELECT ip FROM licznik WHERE ip='$ip'AND data>'$dzis'";
  53. $rez = mysql_query($zapyt);
  54. $num = mysql_num_rows($rez);
  55. if($num==1){ //licznik unikalnych + kasowanie starych
  56.  $zapyt = "UPDATE licznik2 SET wizyt=wizyt+1"; 
  57.  mysql_query($zapyt);
  58.  $roznica = time()-(48*3600); //usuwamy dane starsze niż 48 godzin
  59.  $zapyt = "DELETE FROM licznik WHERE data<'$roznica'";
  60.  mysql_query($zapyt);
  61. }
  62.  
  63. //wyswietlamy co trzeba
  64. $zapyt = "SELECT wizyt,odslon FROM licznik2";
  65. $rez = mysql_query($zapyt);
  66. $row = mysql_fetch_array ($rez, MYSQL_ASSOC); 
  67. foreach($row as $linia){
  68. $licznik[] = $linia;
  69. }
  70. $zapyt = "SELECT count(DISTINCT ip)
  71.  FROM licznik WHERE data>$dzis";
  72. $rez = mysql_query($zapyt);
  73. $row = mysql_fetch_array ($rez, MYSQL_ASSOC); 
  74. $licznik[2] = $row['count(DISTINCT ip)'];
  75. $zapyt = "SELECT count(DISTINCT ip)
  76.  FROM licznik WHERE data<$dzis";
  77. $rez = mysql_query($zapyt);
  78. $row = mysql_fetch_array ($rez, MYSQL_ASSOC); 
  79. $licznik[3] = $row['count(DISTINCT ip)'];
  80. $zapyt = "SELECT count(DISTINCT ip)
  81.  FROM licznik WHERE data>$online";
  82. $rez = mysql_query($zapyt);
  83. $row = mysql_fetch_array ($rez, MYSQL_ASSOC); 
  84. $licznik[4] = $row['count(DISTINCT ip)'];
  85. $zapyt = "SELECT count(DISTINCT ip)
  86.  FROM licznik WHERE data>$m";
  87. $rez = mysql_query($zapyt);
  88. $row = mysql_fetch_array ($rez, MYSQL_ASSOC); 
  89. $licznik[5] = $row['count(DISTINCT ip)'];
  90.  
  91. print '<table class="font" border="0" cellpadding="0" width="" cellspacing="0" bordercolor="#9CACAD" ><tr><td><font size="2"> 
  92.  Wizyt: '.$licznik[0].'</br>
  93.  Wszytkich odsłon: '.$licznik[1].'</br>
  94.  Dziś: '.$licznik[2].'</br>
  95.  Wczoraj: '.$licznik[3].'</br>
  96.  Online: '.$licznik[4].'</br>
  97.  Ten miesiąc: '.$licznik[5].'</font></br></td></tr></table>
  98. ';
  99.  
  100. }
  101. //----------------------zalogowani--------------------------
  102. ?>
  103. <hr size="1px" color="#dadada"><font size="2">Lista użytkowników<br /> aktywnych przez ostatnie<br> 20 minut:</font><br>
  104. <?
  105.  
  106. define ('TIMEOUT', 20);
  107. $ostatnio_online = time();
  108.  $sql = "SELECT * FROM uzytkownik WHERE user = '".$_SESSION['prawid_uzyt']."'";
  109. $query7 = mysql_query($sql);
  110. $rows=mysql_num_rows($query7);
  111. $row = mysql_fetch_array($query7);
  112.  
  113. $postow = $row[postow];
  114.  
  115. $zapytaj = "SELECT * FROM kto_online WHERE ip = '".$_SERVER['REMOTE_ADDR']."' AND nick = '".$_SESSION['prawid_uzyt']."'";
  116. $query = mysql_query($zapytaj);
  117. $ile = mysql_num_rows($query);
  118.  
  119. $zapytanie = "SELECT * FROM uzytkownik where user = '".$_SESSION['prawid_uzyt']."'";
  120. $wykonaj = mysql_query($zapytanie);
  121. $rows = mysql_num_rows($wykonaj);
  122. $row = mysql_fetch_array($wykonaj);
  123.  
  124. $numer_usera = $row[id];
  125.  
  126. if ($_SESSION['prawid_uzyt'])
  127.  {
  128.  if($ile<1)
  129. {
  130. $zapytaj1 = "INSERT INTO kto_online (nick, 
  131. ostatnio_online, ip, numer, postow) VALUES ('".$_SESSION['prawid_uzyt']."',
  132. '".$ostatnio_online."', '".$_SERVER['REMOTE_ADDR']."', '".$numer_usera."', '".$postow."')";
  133. $query2 = mysql_query($zapytaj1);
  134. if(!$query2) { echo mysql_error(); }
  135.  
  136.  
  137. }
  138. elseif($ile>=1)
  139. {
  140. $zapytaj2 = "UPDATE kto_online SET nick = '".$_SESSION['prawid_uzyt']."',
  141.  onlineid = '".$onlineid."', ostatnio_online = '".$ostatnio_online."', 
  142.  ip = '".$_SERVER['REMOTE_ADDR']."', numer = '".$numer_usera."',
  143. postow = '".$postow."' WHERE onlineid = '".$onlineid."'";
  144. $query3 = mysql_query($zapytaj2);
  145. }
  146. }
  147. $aktywnosc = time()-(60*TIMEOUT);
  148. $wywal_nieaktywnego = "DELETE FROM kto_online WHERE ostatnio_online < $aktywnosc";
  149. $query4 = mysql_query($wywal_nieaktywnego);
  150.  
  151. $zapytaj_o_online = "SELECT * FROM kto_online ORDER by ostatnio_online ASC";
  152. $query5 = mysql_query($zapytaj_o_online);
  153.  
  154.  
  155.  if($rows = mysql_num_rows($query5) == 0){
  156.  
  157. echo "<br><font color=#FF9999 size=1>Brak zalogowanych uzytkowników.\n</font>";
  158.  
  159.  }
  160. else
  161. {
  162.  while($row = mysql_fetch_assoc($query5)) 
  163. {  
  164.  
  165.  
  166. $ile_postow = $row[postow];
  167.  
  168.  
  169.  if($ile_postow < 20) 
  170. {
  171. $color="brown";
  172. }
  173. if($ile_postow >= 20) 
  174. {
  175. $color="red";
  176. }
  177. if($ile_postow >= 40)
  178. {
  179. $color="red";
  180. }
  181.  
  182. echo "<a href='?kto=pokaz&id=$row[numer]' style='text-decoration: none' alt='Zobacz profil'>";
  183. echo "<strong>";
  184. echo "<font color=$color size=2px>";
  185.  echo ($row[nick]);
  186.  if(1<mysql_num_rows($query5)) { echo ', '; }
  187.  echo '</font>';
  188. echo "</strong>";
  189. echo '</a>';
  190. }
  191.  
  192.  
  193. }
  194. ?>

i SQL
  1. CREATE TABLE IF NOT EXISTS `licznik` (
  2. `ip` char(20) NOT NULL,
  3. `data` char(20) NOT NULL,
  4. `id` int(11) NOT NULL AUTO_INCREMENT,
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=658 ;
  7.  
  8. CREATE TABLE IF NOT EXISTS `licznik2` (
  9. `odslon` char(5) NOT NULL,
  10. `wizyt` char(5) NOT NULL,
  11. `id` int(11) NOT NULL AUTO_INCREMENT,
  12. PRIMARY KEY (`id`)
  13. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=2 ;


czyste są? brak żadnych pomyłek?
.radex
może popracuj nad jakością kodu (taby&spółka), bo to jednak spory kawałek kodu i jeszcze bez komentarzy - ciężko tak zrozumieć kod kogoś innego.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.