PX : code

Hit Counter by Dennis Albregtse
Download this code


<?php

  
/* File: counter.php
   * Written by: Dennis Albregtse (dennis@albregtse.net)
   * Version: 0.3
   *
   * Features:
   * - Counts all hits
   * - Browser recognition
   * - Own frontend and use of variables on source site
   * - No need for a (mysql) database
   *
   * Installation instructions
   * - Place this file somewhere on your webserver
   * - include this file on every php file you wish to be counted. i.e. include("counter.php");
   * - make sure the directory where counter.php is placed is writable by the www user
   * - use on of the following variables to show the hits
   *   $hits : all hits
   *   $hits_ie: all hits by internet explorer
   *   $hits_ns: all hits by netscape or mozilla
   *   $hits_konq: all hits by konqueror
   *   $hits_opera: all hits by opera
   *   $hits_unk: all hist by an unknown browser
   *   ie, this is the line I use on my site echo $hits." Hits | ie: ".$hits_ie." | ns: ".$hits_ns." | Konq: ".$hits_konq." | op: ". $hits_opera." | unk: ".$hits_unk;
   * - To show the frontend point your browser to counter.php?action=view
   * - I'm sorry but the rest of the comments are in dutch...
   */
   
if (isset($action))
  {
   if(
$action == "view")
   {
     if(
$fp = @fopen("counter.txt""r+"))
    {
      
$numbers =Leesbestand($fp);
     
      
$html '<table>';
      
$html .= '<tr><td>Hits:</td><td>'.$numbers[0].'</td></tr>';
      
$html .= '<tr><td>Internet Explorer</td><td>'.$numbers[1].'</td></tr>';
      
$html .= '<tr><td>Netscape</td><td>'.$numbers[2].'</td></tr>';
      
$html .= '<tr><td>Konqueror</td><td>'.$numbers[3].'</td></tr>';
      
$html .= '<tr><td>Opera</td><td>'.$numbers[4].'</td></tr>';
      
$html .= '<tr><td>Onbekend</td><td>'.$numbers[5].'</td></tr>';
      
$html .= '</table>';
      echo 
"$html";
    }
    else
    {
      
$html 'Kan file niet openen';
      echo 
"$html";
    }
  }
}  
else
{
  if(
$fp = @fopen("counter.txt""r+"))
  {
    
// File bestaat, dus lees de file en tel er 1 bij op
    
$numbersleesBestand($fp);
      
     
/* Array ziet er als volgt uit:
     * plaats 0 hits
     * plaats 1 ie
     * plaats 2 ns
     * plaats 3 konq
     * plaats 4 opera
     * plaats 5 onbekend */
  
    
$browser checkBrowser();
    if (
$browser == "ie")
    {
      
$numbers[1] = $numbers[1] + 1;
    }
    elseif (
$browser == "ns")
    {
      
$numbers[2] = $numbers[2] + 1;
    }
    elseif (
$browser == "konq")
    {
      
$numbers[3] = $numbers[3] + 1;
    }
    elseif (
$browser == "opera")
    {
      
$numbers[4] = $numbers[4] + 1;
    }
    elseif (
$browser == "onbekend")
    {
      
$numbers[5] = $numbers[5] + 1;
    }
  
    
// Tel 1 hit erbij
    
$numbers[0] = $numbers[0] + 1;
    
    
rewind($fp);
  
    
$i 0;
    while (
$i <= 5
    {
      
fwrite($fp$numbers[$i]."\n");
      
$i++;
    }
    
// maak van de array begrijpbare variabelen zodat ze op de site gebruikt kunnen worden
    
$hits $numbers[0];
    
$hits_ie $numbers[1];
    
$hits_ns $numbers[2];
    
$hits_konq $numbers[3];
    
$hits_opera $numbers[4];
    
$hits_unk $numbers[5];
  }
  else
  {
    
// File bestaat niet
    
$fp fopen("counter.txt""w");
   
    
// Vul array $numbers
    
$i 0;
    while (
$i <= 5)
    {
      
$numbers[$i] = 0;
      
$i++;
    }
  
    
$browser checkBrowser();
    if (
$browser == "ie")
    {
      
$numbers[1] = 1;
    }
    elseif (
$browser == "ns")
    {
      
$numbers[2] = 1;
    }
    elseif (
$browser == "konq")
    {
      
$numbers[3] = 1;
    }
    elseif (
$browser == "opera")
    {
      
$numbers[4] = 1;
    }
    elseif (
$browser == "onbekend")
    {
      
$numbers[5] = 1;
    }
  
    
// 1 hit er bij
    
$numbers[0] = 1;
  
    
$i 0;
    while (
$i <= 5
    {
      
fwrite($fp$numbers[$i]."\n");
      
$i++;
    }
  }
}

function 
leesBestand($fp)
{
  
$i 0;
  while (!
feof ($fp)) 
  {
    
$count fgets($fp,4096);
    
$numbers[$i] = str_replace ("\n"""$count);
    
$i++;
  }
  return 
$numbers;
}

function 
checkBrowser()
{
  
// Functie zoekt uit welke browser een surfer gebruikt
  
$useragent getenv("HTTP_USER_AGENT");
  if (
preg_match ("/MSIE/i"$useragent))
  {
    
// Internet exploder
    
$browser "ie";
    return 
$browser;
  }
  elseif (
preg_match ("/Gecko/i"$useragent))
  {
    
// Iets met een gecko engine waarschijnlijk Mozilla of netscape
    
$browser "ns";
    return 
$browser;
  }
  elseif (
preg_match ("/Konqueror/i"$useragent))
  {
    
// Konqueror
    
$browser "konq";
    return 
$browser;
  }
  elseif (
preg_match ("/Opera/i"$useragent))
  {
    
// Opera
    
$browser "opera";
    return 
$browser;
  }
  else 
  {
    
// Onbekende browser
    
$browser "onbekend";
    return 
$browser;
  }
}
// Sluit file af
fclose($fp);
?> 

Comments or questions?
PX is running PHP 5.2.17
Thanks to Miranda Productions for hosting and bandwidth.
Use of any code from PX is at your own risk.