NoPaste

Counter

von TomL

Dein Code:
  1. <?php
  2.  
  3. $dir = "visitors";                                                          // verzeichnis in dem die log-datei liegt, ohne schrägstriche
  4. $db = date('Y') . "-" . date('m') . "-ViewCounts.db";                       // name der log-datei
  5.  
  6. $newlink  = 1;
  7. $url      = "";
  8. $file     = $dir."/".$db;
  9.  
  10. if (!file_exists($dir)){                                                    // hier wird versucht das verzeichnis zur zähler-datei zu erstellen.
  11.     mkdir($dir) or die ("can't create directory!");                         // das könnte man aber auch per hand...
  12. }
  13. if (!file_exists($file)){
  14.     $getstats = fopen($file, "w+");
  15.     fclose($getstats);
  16. }
  17.  
  18. $url = $_GET['to'];                                                         // die zu zählende Seite aus der GET-übergabe fischen...
  19. #Print "2 url      :  " . $url . "<br/>";
  20. #exit();
  21.  
  22. if ((isset($url)) && (!empty($url)) && (strlen($url)>4)){                   // darf nicht leer sein und muss aus mindestens vier zeichen bestehen
  23.     $getstats = fopen($file, "r+");                                         // die zähler-datei wird geöffnet und gesperrt - zwei gleichzeitige
  24.     flock($getstats, LOCK_EX);                                              // zugriffe würden die sache nur durcheinanderbringen
  25.     $filecontent = fread($getstats, filesize($file));                       // die zähler-datei wird eingelesen...
  26.     $fileline = explode("\n", $filecontent);
  27.     $lines = count($fileline)-1;
  28.     rewind($getstats);
  29.  
  30.     for ($n = 0; $n < $lines; $n++){                                        // in jeder zeile ist der auszuwertende link und die klicksumme vermerkt.
  31.         $entry = explode(" $ ", $fileline[$n]);                             // das wird hier getrennt und zeilenweise abgearbeitet
  32.         if ($entry[0] == $url){                                             // falls der eintrag der aktuellen zeile mit dem übergebenen Eintrag übereinstimmt
  33.               $entry[1]++;                                                  // wird der entsprechende klick-zähler erhöht...
  34.         } else {
  35.               $newlink++;                                                   // ...andernfalls wird ein script-interner zähler zur ermittlung neuer links verwendet
  36.         }
  37.         $writeline = "$entry[0] \$ $entry[1]\n";
  38.         fwrite($getstats, $writeline);
  39.     }
  40.  
  41.     if ($newlink > $lines){                                                 // falls bei allen einträgen keine übereinstimmung auftrat handelt es sich wohl um
  42.         $newline = "$url \$ 1\n";                                           // einen neuen link - dann wird dieser eben angehängt
  43.         fwrite($getstats, $newline);
  44.     }
  45.  
  46.     flock($getstats, LOCK_UN);                                              // abschließend geben wir die zähler-datei wieder frei...
  47.     fclose($getstats);
  48. }
  49.  
  50. exit();
  51.  
  52. ?>

Quellcode

Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. Alternativ kannst du den gesamten Eintrag auch als Datei herunterladen.