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:
  Deprecated: Function strftime() is deprecated in /mnt/web312/b2/57/59271857/htdocs/gerhard-raabe/pages/IT/PHP/Counter/Example/Counter.inc.php on line 63 Seit dem 25.08.2008 waren 3996 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($LogHandler, time()."#".$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
438933 Besucher - seit dem 01.02.2005 - 00:00:00 - 1 Besucher online © 2004-2015 by Gerhard Raabe ##, ## ### #### - ##:##:##