Sunday, April 29, 2012

Jednostavna PHP statistika

Prilikom razvoja web aplikacija, česti su zahtevi za evidentiranjem broja posetilaca na celokupnom nalogu ili u okviru pojedinačnih stranica. Na internetu su dostupna mnogobrojna rešenja koja će "odraditi" posao i obezbediti kvalitetnu statistiku, ali svakako da poželimo sasvim običan kod koji će uz jednostavnu implementaciju pružiti minimum potrebnih podataka.

U nastavku sledi primer jednostavnog koda koji je potrebno da kopirate na bilo koju stranicu na kojoj želite praćenje poseta (najčešće početna stranica prezentacije).



<?php
 function counter($file)
 {
  $contents = ((file_exists($file)) ? (preg_split("/((\r(?!\n))|((?!\r)\n)|(\r\n))/", file_get_contents($file))) : (array()));
 
  $incremented = false;
  if(count($contents) > 0)
   foreach($contents as &$line)
   {
    $line = explode("\t", $line);
    if($line[0] == $_SERVER["REMOTE_ADDR"])
    {
     $line[1]++;
     $line = implode("\t", $line);
     $incremented = true;
     break;
    }
    $line = implode("\t", $line);
   }
 
  if(!$incremented)
   $contents[] = $_SERVER["REMOTE_ADDR"]."\t1";
 
  $contents = implode("\r\n", $contents);
  file_put_contents($file, $contents);
 }
 
 counter("log.txt");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <style type="text/css">
   h1
   {
    font: normal 32px "Lucida Sans Unicode", "Lucida Grande", Verdana, sans-serif;
   }
 
   pre
   {
    font: 12px Consolas, Monaco, monospace;
    overflow: auto;
   }
  </style>
  <title>Statistika poseta</title>
 </head>
 <body>
  <h1>Log</h1>
  <pre><?php require "log.txt"; ?></pre>
 </body>
</html>


Log fajl koji se kreira sadrži listu IP adresa svih posetilaca za brojem pristupa koji su ostvareni.

No comments:

Post a Comment