www.Gerhard-Raabe.de
  PHP:
 
 
Back   Besucherzähler
 
Copyright: Der nachfolgende Code ist frei verfügbar, solange er nicht kommerziell verwendet wird! Falls er so wie veröffentlicht, in Teilen oder abgewandelt zum Einsatz kommt, würde ich mich sehr über eine kurze E-Mail freuen.
 
Beschreibung: Besucherzähler, der in einem Logfile die IP-Adresse und das Verbindungsdatum mit Uhrzeit protokoliert. Besucher werden dann als neu gewertet, wenn sie länger als die angegebene Zeit nicht mit der Site verbunden waren. Einmal angemeldete Besucher, werden für diesen Zeitraum als "Online" gezählt.
 
Beispiel:
  Seit dem 25.08.2008 waren 3324 Besucher auf dieser Seite
1 Besucher online
 
 
Aufruf: Beschreibung:

Der Code des Besucherzählers liegt als Include-File vor. Der Aufruf des Counters erfolgt über einen Funktionsaufruf mit drei Übergabepareameter:

$FormatText Freier Text, der als Besucherzähler angezeigt wird. Dabei werden die folgenden drei Schlüsselwörter durch die entsprechenden, vom Zähler ermittelten Werte ersetzt:
#StartDate# : wird ersetzt durch das Start-Datum (älteste im Log-File verfügbare Datum)
#Counter# : wird ersetzt durch die Anzahl der Besucher seit dem Start-Datum
#Online# : wird ersetzt durch die Anzahl der Besucher, die aktuell als Online gelten
 
$CounterLog Pfad- und File-Bezeichnung für das Log-File
 
$CounterUserActiveTime Zeit in sec., die ein einmal angemeldeter Besucher als "Online" gilt


Beispiel (CallCounter.php):

  <?php
    
// Load Code from include-File
    
include "Counter.inc.php";

    
// Counter Text, free Text with some codewords:
    //  - #StartDate#: will be replaced by the first date in the logfile
    //  - #Counter#: will be replaced by the count of visitors
    //  - #Online#: will be replaced by the count of online visitors
    
$FormatText "Seit dem #StartDate# waren #Counter# Besucher auf dieser Seite<br>";
    
$FormatText $FormatText."#Online# Besucher online<br>";
    
    
// Logfile for IP and logon date/time
    
$CounterLog "counter.txt";
    
    
// User is active for 3600 sec
    
$CounterUserActiveTime 3600;
    
    
// Call Counter:
    
Counter($FormatText$CounterLog$CounterUserActiveTime);
?>
 
 
Code: Counter.inc.php:

  <?php
    
function Counter($FormatText$LogFile$UserActiveTime)
    {
        
// Read IP-Adresse
        
$IP $_SERVER["REMOTE_ADDR"]; 
        
$IPExists false
        
$StartDate time();
        
$Counter 0;
        
$Online 1;
        if (
file_exists($LogFile)) 
        {
            
$LogHandler file($LogFile); 

            
// Search for IP-Adresses
            
$IPActive = array();
            
$IPActive[0] = $IP;
            
$Counter count($LogHandler);
            for (
$Index 0$Index count($LogHandler); $Index++) 
            { 
                
$LogLine explode('#'trim($LogHandler[$Index])); 

                
// Startdate
                
if ($Index == 0)
                {
                    
$StartDate $LogLine[0];
                }
                
                
// Active IP-Adresses
                
if (time() < $LogLine[0] + $UserActiveTime
                { 
                    
$Count 0;
                    
$InActiveList false;
                    while ((
$Count sizeof($IPActive)) && (!$InActiveList))
                    {
                        if (
$IPActive[$Count] == $LogLine[1])
                        {
                            
$InActiveList true;
                        }
                        
$Count++;
                    }
                    if (!
$InActiveList)
                    {
                        
$IPActive[sizeof($IPActive)] = $LogLine[1];
                        
$Online++;
                    }
                    
// If actuell IP then mark
                    
if ($LogLine[1] == $IP
                    { 
                        
$IPExists true
                    } 
                }    
            } 
        }

        
// Write to Logfile only if not active since UserActiveTime
        
if (!$IPExists)
        {
            
$LogHandler fopen($LogFile"a"); 
            
fwrite($LogHandlertime()."#".$IP."\n"); 
            
fclose($LogHandler);
            
$Counter++;
        }
        
$FormatText str_replace("#StartDate#"strftime("%d.%m.%Y"$StartDate), $FormatText);
        
$FormatText str_replace("#Counter#"$Counter$FormatText);
        
$FormatText str_replace("#Online#"$Online$FormatText);
        echo 
$FormatText;
    }
?>
 
 
Download:
Next   Counter.zip
389073 Besucher - seit dem 01.02.2005 - 1 Besucher online © 2004-2015 by Gerhard Raabe ##, ## ### #### - ##:##:##