Perl Script: Besucherzähler mit Statistikauswertung
Perl Script: Besucherzähler mit Statistikauswertung
 go to ...Vorwort
 go to ...Installation
 go to ...Counter Einrichtung
 go to ...Counter Einbindung in HTML
 go to ...Counter Statistik abrufen
 go to ...Counter Werte verändern
 go to ...Counter löschen
 go to ...Download
 go to ...Support






go to index Vorwort

Noch ein Counter? Aber sicher doch ...

Kostenlose Counter gibt es zwar genug im Netz, doch was die Verfügbarkeit und das Antwortzeitverhalten solcher Anbieter angeht, steht es damit nicht immer zum Besten.

Auch Einsatzmöglichkeiten und Auswertungen kostenpflichtiger, professioneller Counteranbieter ließen immer noch einige meiner Wünsche unberücksichtigt.

Spätestens mit der Möglichkeit eigene CGI-Scripts auf HTML Seiten einbinden zu können, entstand bei mir der Wunsch nach einem universell einsetzbaren Besucherzähler, der natürlich auch statistische Auswertungen ermöglicht.

Da ich beruflich ebenfalls Perl Kenntnisse benötigte, sind im Laufe meines "Perl - Selbststudiums" einige Scripts entstanden, die vielleicht irgendjemand im WordWideWeb für seine eigene Site ebenfalls gebrauchen kann.

Und dabei herausgekommen sind vier kleine Perl Scripts:

  • counter.cgi ein schneller Counter mit File-Locking, Reload-Sperre (optional) und Statistik-Datensammlung, kann wahlweise versteckt oder mit Text-Ausgabe oder grafischer Anzeige aufgerufen werden.

  • cadmin.cgi ein Administrations Script zum Anlegen, Modifizieren, Löschen der Counter Dateien, sowie zum Abrufen der Besucher Statistiken.

  • chistsave.pl eine kleine Unterroutine, die sowohl von counter.cgi als auch von cadmin.cgi maximal 1xmal täglich benötigt wird.

  • cversions.pl eine kleine Unterroutine, die von cadmin.cgi (zur Analyse der Browser Useragent Informationen) benötigt wird.



go to index Installation

  1. Download counter.zip (Zipfile 83KB)


  2. counter.zip entpacken - die Unter-Verzeichnisse cgi-bin, img und sdata werden erwartet, bzw. erstellt.

    Das Zipfile beinhaltet folgende Dateien:

    VerzeichnisModuleAnmerkung
      GNUgpl.txtPopUp Window GNU GENERAL PUBLIC LICENSE
    Version 2, June 1991
      readme.txtPopUp Window kurze ZIP-File Gebrauchsanweisung
    cgi-bin cadmin.cgi Perlscript zum Erstellen, Modifizieren und Löschen der Counter(-Files), sowie zum Erstellen von Besucherstatistiken
    cgi-bin chistsave.pl Perlscript Subroutine zum Sichern der aktuellen Counter Logrecords, wird von counter.cgi und cadmin.cgi benötigt
    (maximal 1xmal täglich)
    cgi-bin counter.cgi Perlscript zum Einbinden beliebig vieler grafischer oder Text-Counter auf HTML Seiten
    cgi-bin cversions.pl Perlscript Subroutine zum Ausfiltern der Statistikinformationen über Browser- und OS -Versionen, wird von cadmin.cgi benötigt
    img b.gif   <img src="img/b.gif" width=1 height=8>
    img d.gif   <img src="img/d.gif" width=1 height=8>
    img g.gif   <img src="img/g.gif" width=1 height=8>
    img m.gif   <img src="img/m.gif" width=1 height=8>
    img o.gif   <img src="img/o.gif" width=1 height=8>
    img p.gif   <img src="img/p.gif" width=1 height=8>
    img r.gif   <img src="img/r.gif" width=1 height=8>
    img t.gif   <img src="img/t.gif" width=1 height=8>
    img v.gif   <img src="img/v.gif" width=1 height=8>
    img y.gif   <img src="img/y.gif" width=1 height=8>
    img godown.gif   <img src="img/godown.gif" width=10 height=10>
    img goupred.gif   <img src="img/goupred.gif" width=10 height=10>
    img ph.gif   <img src="img/ph.gif" width=51 height=47>
    sdata hist100.txtPopUp Window Beispiel für das History File eines Counters mit der ID 100
    Stand 04.04.2001
    sdata liesmich.html diese Seite liest Du gerade  8)
    sdata log100.txtPopUp Window Beispiel für das History File eines Counters mit der ID 100
    Stand 04.04.2001
    sdata muster0.htmlPopUp Window Beispiel einer Besucher-Statistik für einen Counter mit der ID 100, Logic Einstellung: "normal"
    Stand 04.04.2001
    sdata muster1.htmlPopUp Window Beispiel einer Besucher-Statistik für einen Counter mit der ID 100, Logic Einstellung: "smart"
    Stand 04.04.2001

    Die Namen der Unterverzeichnisse cgi-bin, img und sdata müssen eventuell auf die Gegebenheiten Deines Servers angepasst werden; das sdata Verzeichnis sollte für Besucher "versteckt", d.h. nicht sichtbar sein  oder  mit Passwortschutz versehen werden.


  3. cadmin.cgi anpassen, folgende Werte müssen eventuell geändert werden:

    a. Zeile 1 #!/usr/bin/perl Pfad zu Perl
    b. Zeile 15 $basedir = '../'; Die relative Adresse des Basis-Verzeichnisses, ausgehend vom jeweiligen cgi-bin Verzeichnis, muss mit "/" End-Delimiter angegeben werden.
    (cgi-bin = das Verzeichnis, in dem das Script cadmin.cgi steht)
    c. Zeile 18 $logfile = $basedir.'sdata/log_.txt'; relative Adresse der Counter Logfiles, das "_"(underscore)Zeichen wird dynamisch durch die numerischen Counter-Ids ersetzt.
    d. Zeile 19 $histfile = $basedir.'sdata/hist_.txt'; relative Adresse der Counter Historyfiles, das "_"(underscore)Zeichen wird dynamisch durch die numerischen Counter-Ids ersetzt.
    e. Zeile 22 $master = 'ganz-geheimes-wort'; das Masterpassword zur Counter Verwaltung, notwendig zum Anlegen oder Löschen von Counter Files, sowie zum Reset des individuell für einen Counter vergebenen Passwords
    f. Zeile 25 $whois = 'http://www.domain ...'; Netzadresse eines WHOIS Informations Servers, wird in der Besucher Detailliste zur (bequemen) Abfrage einer in der Statistik ausgewiesenen IP Adresse benötigt.
    g. Zeile 28 $logic = 1; Dieser Schalter kann auf 0 oder 1 stehen; der Wert bestimmt die Art und Weise, wie der statistische Tages-, Monats- und Jahresdurchschnitt der Besucher ermittelt wird ... am besten einfach mal ausprobieren  ;-)
    h. Zeile 33 $shist = 150; Vordefinierte Anzahl von Detaileinträgen in Counter History-Files. Dieser Wert dient nur als Vorgabe beim Anlegen neuer Counter; er kann immer für jeden Counter individuell gesetzt werden.
    i. Zeile 34 $sdays = 31; Vordefinierte Anzahl von Tagessummen Einträgen in Counter History-Files. Dieser Wert dient nur als Vorgabe beim Anlegen neuer Counter; er kann immer für jeden Counter individuell gesetzt werden.
    j. Zeile 35 $smons = 12; Vordefinierte Anzahl von Monatssummen Einträgen in Counter History-Files. Dieser Wert dient nur als Vorgabe beim Anlegen neuer Counter; er kann immer für jeden Counter individuell gesetzt werden.
    k. Zeile 36 $syears = 2; Vordefinierte Anzahl von Jahressummen Einträgen in Counter History-Files. Dieser Wert dient nur als Vorgabe beim Anlegen neuer Counter; er kann immer für jeden Counter individuell gesetzt werden.
    l. Zeile 37 $minhist = 50; Vordefinierter Anzahl von anzuzeigenden Detail Einträgen in Counter Statistiken. Dieser MinimalWert dient nur als Vorgabe beim Aufruf der Statistik Anzeige; er kann immer für jede Abfrage höher gesetzt werden.
     
    In den Zeilen 41-47 folgen die Definitionen der GIF-Files, die zur grafischen Darstellung der einzelnen Summen-Balken verwendet werden. Der einstellige Namensprefix entspricht den verhandenen Farben.
    bblue = blue
    ddarkgrey = darkgrey
    ggreen = green
    mmaroon = maroon
    oorange = orange
              
    ppink = pink
    rred = red
    tturquoise = turquoise
    vviolet = violet
    yyellow = yellow
    m. Zeile 41 $dsumc = $basedir.'img/g.gif'; relative Adresse des GIF-Files für die Darstellung der Tagessummen
    n. Zeile 42 $msumc = $basedir.'img/t.gif'; relative Adresse des GIF-Files für die Darstellung der Monatssummen
    o. Zeile 43 $ysumc = $basedir.'img/b.gif'; relative Adresse des GIF-Files für die Darstellung der Jahressummen
    p. Zeile 44 $fsumc = $basedir.'img/r.gif'; relative Adresse des GIF-Files für die Darstellung der Statistik der bevorzugten Browser (Browser War)
    q. Zeile 45 $bsumc = $basedir.'img/o.gif'; relative Adresse des GIF-Files für die Darstellung der Statistik der Browser Versionen
    r. Zeile 46 $osumc = $basedir.'img/y.gif'; relative Adresse des GIF-Files für die Darstellung der Statistik der Betriebssysteme
    s. Zeile 47 $ssumc = $basedir.'img/m.gif'; relative Adresse des GIF-Files für die Darstellung der Statistik der Bildschirmgrößen
    t. Zeile 49 $purim = $basedir.'img/ph.gif'; relative Adresse des PurpurHain Logos, erscheint am Ende der Statistikseiten
    ein bißchen Werbung darf wohl sein ;))



  4. counter.cgi anpassen, folgende Werte müssen eventuell geändert werden:

    a. Zeile 1 #!/usr/bin/perl Pfad zu Perl
    b. Zeile 29 $basedir = '../'; Die relative Adresse des Basis-Verzeichnisses, ausgehend vom jeweiligen cgi-bin Verzeichnis, muss mit "/" End-Delimiter angegeben werden.
    (cgi-bin = das Verzeichnis, in dem das Script counter.cgi steht)
    c. Zeile 30 $logfile = $basedir.'sdata/log_.txt'; relative Adresse der Counter Logfiles, das "_"(underscore)Zeichen wird dynamisch durch die numerischen Counter-Ids ersetzt.
    d. Zeile 31 $histfile = $basedir.'sdata/hist_.txt'; relative Adresse der Counter Historyfiles, das "_"(underscore)Zeichen wird dynamisch durch die numerischen Counter-Ids ersetzt.



  5. File-Transfer der benötigten Dateien ins Online-Verzeichnis und CHMOD Zugriffsrechte setzen.
    (Bei Fragen zu CHMOD gibt es hier eine kleine Online-Hilfe: http://selfaktuell.teamone.de/artikel/cgiperl/inbetriebnahme/index.htm#a7externer Link.)

    VerzeichnisModuleCHMODAnmerkung
    cgi-bin cadmin.cgi 755 FTP Übertragung im ASCII Modus
    chistsave.pl
    counter.cgi
    cversions.pl
    img b.gif   FTP Übertragung im Binary Modus
    d.gif
    g.gif
    m.gif
    o.gif
    p.gif
    ph.gif
    r.gif
    t.gif
    v.gif
    y.gif



go to index Einrichten eines Counters

Aufruf von http://www.deine-domäne.de/cgi-bin/cadmin.cgi

Counter Administration: Create

  1. Angabe der numerischen Counter-Id
  2. Auswahl der Funktion Create
  3. Eingabe des Master Passwords
  4. Aktueller Counter Wert, ohne Angabe wird der Wert auf 0 gesetzt
  5. Angabe der Counter Homepage Adresse (ohne http://)
  6. Definition der Statistik Vorgaben (Anzahl der Detail Records, Tage, Monate, Jahre, die für die Statistik ausgewertet werden)
  7. Eingabe des Counter Passwords
  8. wiederholte Eingabe des Counter Passwords (zur Verifikation)



go to index HTML Einbindung eines Counters

Folgende Parameter werden unterstützt, wobei die Schreibweise nicht case-sensitiv ist. Optionale Angaben sind in { Klammern eingeschlossen }, Defaultwerte sind farbig hinterlegt:

  ID=counterid
numerische Counter-Id, möglich sind Werte von 1 bis 99999, führende Nullen werden ignoriert.

{ INCR=false || true || 0 || 1 }
Dieser Parameter legt fest, ob der Counter hochgezählt werden soll INCR=true, INCR=1 oder nur der aktuelle Wert als Grafik oder Textstring angezeigt wird INCR=false, INCR=0,
Defaultwert ist INCR=true.


{ REF=document.referrer }
document-referrer-URL, zum Erfassen des auf den Counter verweisenden HTML-Dokumentes, bei deaktiviertem Javascript wird hier noscript ausgewiesen.
Werte werden allerdings nur in Kombination mit INCR=true erfasst.


{ RL=anzahl-sekunden-für-IP-reload-sperre || 0 }
Anzahl Sekunden für eine IP-Adressen Reload-Sperre, ohne Angabe gilt der Defaultwert RL=0.
Diese Angabe wirkt nur in Kombination mit INCR=true.


{ SH=screen-height }
Hier wird per Javascript der aktuelle screen-height Wert erfasst,
allerdings nur in Kombination mit INCR=true.


{ SW=screen-width }
Hier wird per Javascript der aktuelle screen-width Wert erfasst,
allerdings nur in Kombination mit INCR=true.



Die folgenden MASK, MASKBW und MASKWB Parameter schliessen sich gegenseitig aus.
Fehlt jegliche MASK* Definition, wird immer ein transparentes GIF Image-File ausgegeben (1x1 Pixel).


{ MASK=ausgabe-maske-textstring }
Dient zur Festlegung der Ausgabe-Maske des Counters entweder
a) als Textstring mittels Javascript document.write($count);
b) oder Textstring per SSI.
Für eine 5stellige Ausgabe mit führenden Nullen wird beispielsweise der Parameter mit MASK=00000 definiert, Minimum für eine Textstring Ausgabe ist ansonsten die Angabe von MASK=0.


{ MASKBW=ausgabe-maske-XBM-Grafik-schwarz-auf-weiss }
Dient zur Festlegung der Ausgabe-Maske des Counters als XBM Grafik (schwarz auf weissem Hintergrund). Für eine 4stellige Ausgabe mit führenden Nullen wird beispielsweise der Parameter mit MASKBW=0000 definiert, Minimum für eine Grafik Ausgabe ist ansonsten die Angabe von MASKBW=0.

{ MASKWB=ausgabe-maske-XBM-Grafik-weiss-auf-schwarz }
Dient zur Festlegung der Ausgabe-Maske des Counters als XBM Grafik (weiss auf schwarzem Hintergrund). Für eine 6stellige Ausgabe mit führenden Nullen wird beispielsweise der Parameter mit MASKWB=000000 definiert, Minimum für eine Grafik Ausgabe ist ansonsten die Angabe von MASKWB=0.


Beispiele für die Counter Einbindung:

1.

Counter mit Reloadsperre, Aufruf über Javascript oder noscript. Ausgegeben wird ein transparentes 1x1 Pixel GIF File, unsichtbar für den Besucher.


<script language="JavaScript" type="text/javascript">
<!--
var ref = '';
if(document.images && document.referrer && document.referrer.length>0)
 { ref += escape(document.referrer); }
if(document.all || document.getElementById || document.layers)
 { ref += '&sh='+screen.height+'&sw='+screen.width; }

document.write('<img src="/cgi-bin/counter.cgi?id=7&rl=3600&ref='+ref+'"
 alt="" width=1 height=1><br>');
//-->
</script>
<noscript>
<img src="/cgi-bin/counter.cgi?id=7&rl=3600&ref=noscript" alt=""
 width=1 height=1><br>
</noscript>
 

2.

nur Counter Textstring Ausgabe, Aufruf über Javascript


<font size=7 color=red>Du bist Besucher Nr.
<script language="JavaScript" type="text/javascript"
 src="/cgi-bin/counter.cgi?id=7&mask=000000&incr=0"></script>
</font>
Du bist Besucher Nr.

3.

nur grafische Counter Ausgabe, XBM-File weiss auf schwarz


Du bist Besucher Nr.
<img src="/cgi-bin/counter.cgi?id=7&maskwb=0&incr=0">
Du bist Besucher Nr.

4.

nur Counter Textstring Ausgabe, Aufruf über SSI


Du bist Besucher Nr.
<span style="font-size:12px; color:#33ff00; background-color:#000000;">

<!--#include virtual="/cgi-bin/counter.cgi?id=7&mask=00000&incr=0"-->

</span>
Du bist Besucher Nr.

5.

Counter mit Reloadsperre, Aufruf über Javascript oder noscript mit grafischer Ausgabe, XBM-File schwarz auf weiss.


Du bist Besucher Nr.
<script language="JavaScript" type="text/javascript">
<!--
var ref = '';
if(document.images && document.referrer && document.referrer.length>0)
 { ref += escape(document.referrer); }
if(document.all || document.getElementById || document.layers)
 { ref += '&SH='+screen.height+'&SW='+screen.width; }

document.write('<img src="/cgi-bin/counter.cgi?ID=42&RL=600&MASKBW=000000
&REF='+ref+'"alt="Counter"><br>');
//-->
</script>
<noscript>
<img src="/cgi-bin/counter.cgi?ID=42&RL=600&REF=noscript&MASKBW=000000"
 alt="Counter"><br>
</noscript>
Du bist Besucher Nr.

6.

Counter ohne Reloadsperre, Aufruf über SSI, auf die Erfassung von document.referrer, screenheight und screenwidth wird ohne Javascript verzichtet


Diese Seite wurde
<span style="font-size:16px; color:#33ff00; background-color:#000000;">

<!--#include virtual="/cgi-bin/counter.cgi?id=4711&mask=0"--></span>

mal aufgerufen.
Diese Seite wurde mal aufgerufen.




go to index Anzeige der Counter Statistiken

Aufruf von http://www.deine-domäne.de/cgi-bin/cadmin.cgi

Counter Administration: Display

  1. Angabe der numerischen Counter-Id
  2. Auswahl der Funktion Display
  3. Eingabe des Counter Passwords
  4. Anzahl der anzuzeigenden Statistik Detail Records ändern
Ein Statistik Beispiel kannst Du hier ansehenPopUp Window.
Stand 04.04.2001



go to index Counter Werte verändern

Aufruf von http://www.deine-domäne.de/cgi-bin/cadmin.cgi

Counter Administration: Update

  1. Angabe der numerischen Counter-Id
  2. Auswahl der Funktion Update
  3. Counter Wert modifizieren (ansonsten verbleibt der aktuelle Wert unverändert)
  4. Counter Homepage Adresse ändern (ohne http://)
  5. Definition der Statistik Vorgaben ändern (Anzahl der Detail Records, Tage, Monate, Jahre, die für die Counter Statistik ausgewertet werden)
  6. Eingabe des aktuellen Counter Passwords, kann bei Angabe des Master Passwords entfallen
  7. Eingabe eines neuen Counter Passwords (falls gewünscht)



go to index Counter löschen

Aufruf von http://www.deine-domäne.de/cgi-bin/cadmin.cgi

Counter Administration: Delete

  1. Angabe der numerischen Counter-Id
  2. Auswahl der Funktion Delete
  3. Eingabe des Master Passwords



go to index Download

Die Counterscripts mit Image-Files und Dokumentation können hier runtergeladen werden (Zipfile 84KB).




go to index Support

Support ... gibt es eigentlich nicht ...
  aber ...
Anregungen?, Fragen??, Probleme ???, Danksagungen????

mailto: eisbaer@purpurhain.de?subject=PurpurHain Counterscript counter.cgi
mit einem hoffentlich einigermaßen aussagefähigen Text ;-))

Für ganz allgemeine Fragen zu CGI gibt es unter folgendem Link eine kleine Online-Hilfe http://selfaktuell.teamone.de/artikel/cgiperl/inbetriebnahme/index.htmexterner Link







      Copyright © Günter Laudenklos 2000-2007
Der seit 28. April 1997