Thomas Luethi: Logdateien

Beitrag lesen

Hallo Michael,

Wo kommen denn ploetzlich die E-Mail-Adressen her? ;-)
Us em heitere Himu. (Bin auch Berner)

Ah, genau. Wurzeln im Schwarzenburgerland, stimmt's?
(Du hattest mir mal ein Mail geschrieben.)

Du meinst ich sollte den Array nach der IPadresse benennnen.

Nein, die Schluessel, nicht die Variable selbst.

unset($ipliste);
Warum hier? Die Variable hat doch keinen Inhalt.

Einfach um sicher zu gehen, dass die Variable nicht existiert.
Weil ja nachher die "Groesse" (Anzahl Schluessel) des Arrays
entscheidend ist.

$ipliste[$ipadresse]=1;
Verstehe ich das so richtig: Man teilt jedem Array, dessen Namen die IP-Adresse hat die Zahl eins zu?

Genau.
Wenn eine IP-Adresse mehrmals vorkommt,
wird dem Array mit diesem Schluessel halt
mehrmals die 1 zugewiesen.
Das tut niemandem weh. ;-)

Zuweisungen:
$ipliste["127.0.0.1"]=1;
$ipliste["255.255.255.255"]=1;
$ipliste["127.0.0.1"]=1;

Resultat: Der Array hat zwei Elemente:
$ipliste["127.0.0.1"]=1;
$ipliste["255.255.255.255"]=1;

Wie ich das jetzt analysiert habe, werden allerdings die gleichen IPs nicht herausgelöscht?

Naja, sie werden nicht mehrfach gezaehlt.
Also entspricht die Anzahl Array-Elemente
der Anzahl verschiedener IP-Adressen.
Und das ist doch, was Du wolltest.

---

Wenn Du wissen willst, welche IP-Adresse wie viele
Anfragen gemacht hat, dann kannst Du natuerlich
das Skript entsprechend anpassen.

Statt einfach immer die Eins zuzuweisen
$ipliste[$ipadresse]=1;
musst Du schauen, ob es zu diesem Schluessel
schon einen Wert gibt.
Wenn ja: Um 1 erhoehen, wenn nein: 1 zuweisen.

if (isset($ipliste[$ipadresse]))
  $ipliste[$ipadresse]++;
else
  $ipliste[$ipadresse]=1;

---

Etwas Lektuere:
http://www.php.net/manual/de/language.types.array.php
http://www.php.net/manual/de/ref.array.php
http://www.php.net/manual/de/language.operators.increment.php

---

Fuer "Logfile-Analyse" gibt es uebrigens zahlreiche
gute Tools, die Dir wunderschoene Torten- und
Balkendiagramme herstellen. Zum Beispiel:
http://www.analog.cx/
http://awstats.sourceforge.net/
http://www.mrunix.net/webalizer/

Gruesse,

Thomas

P.S. Ich wuerde nie im Leben einen "Role-Account"
wie info@example.com in Foren oder Newsgroups
angeben. Ist aber Geschmackssache.
(Ob info@ ein offizieller Role-Account gemaess
einer RFC ist, weiss ich nicht.)
Deine Homepage gefaellt mir auf den ersten Blick gut.
Du solltest noch eine Charset-Angabe machen,
am besten serverseitig.
Aber die steht ja hier nicht zur Diskussion... ;-)