Vinzenz Mai: php mit txt.datei und abfragen

Beitrag lesen

Hallo

ich möchte einen besucherzähler haben, der die ip des besuchers in eine textdatei untereinander schreibt.

Du hast Dir eine schöne, aber auch sehr aufwendige Aufgabe ausgesucht, um Dich mit PHP und seinen Möglichkeiten vertraut zu machen.

127.0.0.1

Wie Du hier im Forum (und seinem Archiv) oft genug lesen kannst, ist die IP-Adresse nicht unbedingt die beste Methode, einen Besucher zu erkennen. Zum einen gibt es Besucher, deren IP-Adresse sich während ihres Besuchs ändern kann, z.B. AOL-Kunden, deren Seitenabrufe mal über den einen mal über einen anderen AOL-Proxy abgewickelt werden können. Zum anderen gibt es verschiedene Benutzer, die die gleiche IP-Adresse aufweisen, z.B. verschiedene Firmenmitarbeiter, die sich einen Internetzugang (z.B. über einen Proxy oder einen Router) teilen.

das wars zum ersten.
das zweite:

nun soll php die ips vergleichen und die doppelten ips löschen und dabei aber die ip einmal bestehen lassen und dahinter die anzahl der aufrufe schreiben.

Nun ja, der zweite Punkt ist eigentlich der:
Welche Seitenaufrufe zählst Du als einen Besuch. Soweit ich mich erinnere, wurde hier im Forum geäußert, dass ein Besucher eine halbe Stunde wegbleiben muss, bevor es ein erneuter Besuch ist. Stell' Dir vor, der Benutzer drückt auf die Reloadtaste seines Browsers. Dann darfst Du das im Normalfall nicht erneut zählen.

Du siehst, einen Besucher _und_ einen Besuch zu identifizieren, ist gar nicht so einfach. Nun kommen wir zum Speichern in der Datei. PHP bietet eine Menge Funktionen zum Umgang mit Dateien, die meisten findest Du im Abschnitt Funktionen des Dateisystems des PHP-Handbuchs.

127.0.0.1
169.254.56.168
127.0.0.1

-->
127.0.0.1 2
169.254.56.168

Wenn Du das so machen willst, dann hast Du z.B. folgende Möglichkeit:

Bei Deinem Format musst Du mindestens ab der Zeile, in der die Änderung erfolgt, die Datei neu schreiben - ja, obwohl sich hinterher nichts geändert hat. In vielen Fällen gehen PHP-Programmierer (der Bequemlichkeit halber) sogar hin, und lesen die komplette Datei mit file() in ein Array aus, ändern den entsprechenden Arrayeintrag und schreiben die Datei mit file_put_contents() wieder weg.

Beachte, dass zur gleichen Zeit, während die Datei in Bearbeitung ist, ein anderer Zugriff auf Deine Webseite erfolgen kann, die Du ebenfalls wegschreiben willst. Damit es nicht zu Problemen kommt, musst Du Sperren für die Datei setzen. Tom hat dies hier im Forum oft genug gepostet, z.B. in </archiv/2005/1/t99170/#m605523>.

so und das dritte:

php soll nun 2 ergebnisse präsentieren:

einmal die anzahl der insgesamten aufrufe 8inkl. alles doppelten aufrufe der selben ip)

Lese die Datei in ein (Zeilen-) Array ein. Durchlaufe das Array, trenne die Einträge in IP und Anzahl (wenn es eine Anzahl gibt), summiere Anzahl auf, gibt es in einer Zeile keine Anzahl so zähle 1 hinzu.

und einmal nur die aufrufe von verschiedenen ips...

Das ist doch die Ausgabe der kompletten Datei. Willst Du das wirklich?

Ach ja, und wenn Dir noch ein paar Anforderungen ähnlicher Art einfallen, dann sieht es fast danach aus, als möchtest Du eine Datenbank benutzen.

Freundliche Grüße

Vinzenz