// Configuration
Erstmal nehmen wir eine speicherschublade nennen diese
dataFile , dort packen wir count.dat rein.
$dataFile=„count.dat“;
// Set the localtion of the datafile
wir nehmen eine speicherschublade nennen diese outStringFormat
und packen dort rein : Sie sind der
[COUNTER]. Besucher.
$outStringFormat=„Sie sind der [COUNTER].
Besucher.“;
// Use the variable „[COUNTER]“ for the number of visit
wir nehmen eine speicherschublade nennen diese useIpLocking
dort packen wir rein : true
$useIpLocking=true;
wenn du kein IP lookup (IP des aufrufers nachgugen) haben
möchtest musst du : false : da rein packen
// Set ‚false‘ if you don’t want to use ip-locking
// Try to open data-file
Hier wird versucht die Datei zu öffnen.
fopen ist der befehl zum öffnen ,
die klammer verdeutlicht das dieser befehl noch einige angaben
braucht.
der name der datei ist in der speicherschublade mit dem namen
dataFile
das „r“ steht für read , ergo lesen
fopen mcht daraus öffne datei count.dat zum lesen
um nun mit der geöffneten datei weiter was tun zu können,
nehmen wir noch eine speicherschublade namens handle und
packen dort diese geöffnete datei rein .
$handle=@fopen($dataFile,„r“);
if = fals
also hier kommt eine prüfung
fals handle vorhanden
if ($handle)
{
tu dies -->>
// Read number of vistors and last ip
fegt is der befehl der wissen muss welche datei und
wieviel es tun soll
fget hat die funktion zeichen zu holen , also sagen wir
fget in der klammer welche datei , das wäre $handle , und
wieviele zeichen gelesen werden sollen , dat wären 20 . das
ergebniss (also die 20 zeichen ) bewahren wir in der
speicherschublade mit namen line auf.
$line=fgets($handle,20);
so nun haben wir 20 zeichen , man muss wissen das in den 20
zeichen Semikolons genutzt werden um die informationen zu
trennen . Z.B. Vorname;Namchname , was dann zu Rakon;Dark
führt.
Hier allerding
zählerstand;ipdesbesuchers
explode ist nun ein befehl der genau an den Semikolons diese
20 Zeichen zerschneidet und in einzelne Speicherschubladen
packen kann.
explode nimmt also die zeichen aus schublade line und
schneidet mit hilfe vom „;“ das in stücke.
diese Stücke werden in der speicherschublade tmpArray
aufbewahrt.
das tolle tmpArray ist eine schublade mit schubladen drinne
-)
so kann ich alle stücke mit ein und demselben schubladen namen
holen.
$tmpArray=explode(";",$line);
hier wird nun in die schublade cnt der inhalt der erste
schublade in der schublade tmpArray genommen. Beim obrigen
beispiel z.b. Rakon. bzw Zählerstand
ein computer beginnt bei 0 zu zählen , nicht bei 1
Ein Kind ist ja auch nach der geburt 0 Jahre alt und nicht 1
Jahr
$cnt=$tmpArray[0];
hier wird nun in schublade ip der inhalt der 2ten schublade
(0=1 schub, 1=2 schub,…) von tmpArray gepackt.
$ip=$tmpArray[1];
fclose schliesst nun die datei
fclose($handle);
}
ansonsten tu das -->>
pacj in schublade cnt den wert 0
else $cnt=0;
hier wird nun geschaut ob die IP des jetzigen besuchers mit
der des letzten eintrages in der datei ist.
// Count up if last ip is different to the user’s ip
fals inhalt ip ungleich IP des jetzigen webbesuchers
oder
useIpLocking gleich false
erhöhe den Inhalt cnt (welches wohl das letzte zähler ergebnis
ist)
soll heissen, nur wenn IP logging abgeschaltet bzw die letzte
ip anders ist als die jetzige wird gezählt. Ansonsten wird
nicht gezählt, weil logging ein und dann noch die ip anders
sein muss.
if ($ip!=$REMOTE_ADDR||!$useIpLocking) $cnt++;
um das ganze nun auszugeben wird printf genutzt
das brauch eine FORMAT string „%s“ ich brauch nur zeichen vom
nachfolgenden.
str_replace ersetzt nun alle zeichen [COUNTER] in schublade
outStringFormat und packt statdessen den inhalt von schublade
cnt rein.
ergo wird [COUNTER] mit dem aktuellen zählerwert getauscht.
und dann ausgeben
printf("%s",str_replace("[COUNTER]",$cnt,$outStringFormat));
nun wird noch mal eben in die erste und zweite schublade der
aktuelle zählerwert und die aktuelle IP des besuchers
gespeichert.
$tmpArray[0]=$cnt;
$tmpArray[1]=$REMOTE_ADDR;
implode macht nun das gegenteil wie explode
es nimmt alle schubladen aus tmpArray und packt sie
hintereinader mit jeweils einem semikolon dazwischen.
$line=implode(";",$tmpArray);
hier wie oben, datei öffnen nun aber mit „w“ für write =
schreiben
$handle=fopen($dataFile,„w“);
wie fget nur fput packt die daten in die datei , hier das
ergebnis der implosion die ja in line abgelegt wurde.
fputs($handle,$line);
datei wirder schliessen , fertich.
fclose ($handle);
?>
so un nun die schlechte nachricht, wenn 2 user
unterschiedlicher IP immerwieder klicken, erhöht sich der
zähler , weil ja immer nur die letzte IP in der datei
gespeichert werden.
Das ding ist also nur gut um zu zählen wie offt eine seite
aufgerufen wurde. Auf die anzahl der tatsächlichen besucher zu
schliessen ist auch mit IP logging nicht möglich.
Also es zählt halt, sobald die seite geöffnet wurde. Mehr und
weniger tut es nicht.
Ich hoffe das reicht zum verständiss.