PHP-Tutorial: Dateien

Um bestimmte Daten konsistent zu speichern benutzt man im allgemeinen Dateien. So können wir über längeren Zeitraum damit arbeiten und sie anpassen o.Ä.
Die Arbeit mit Dateien kann man in drei Teile zerlegen, zum einen das Öffnen der Datei, zum anderen das Lesen oder Schreiben und zum letzten das Schließen.
Zum Öffnen von Dateien steht uns der Befehl fopen(DATEINAME, MODUS) zur Verfügung. Er liefert uns einen Dateizeiger (ein Zeiger auf eine Position in der Datei), mit dem wir weiter arbeiten können. Als Modus können wir folgendes verwenden:

ModusFunktionDateizeiger
rLesenAnfang
r+Lesen und SchreibenAnfang
wSchreibenAnfang
w+Lesen und SchreibenAnfang
aSchreibenEnde
a+Lesen und SchreibenEnde


Zu beachten ist, dass bei den Modi r und r+ die Datei existieren muss, die anderen Modi würden sie ggf. anlegen. Mit w oder w+ wird der vorherige Inhalt ohne weitere Nachfrage überschrieben wenn man den Dateizeiger nicht selbstständig an das Ende der Datei setzt.
Zum lesen in Dateien eignet sich die Funktion fgets(DATEIZEIGER, LAENGE), sie ließt, ab der Position die DATEIZEIGER symbolisiert, LAENGE Bytes. Wird der Parameter LAENGE weggelassen, wird eine komplette Zeile gelesen.
Um in eine Datei zu schreiben benutzen wir die Funktion fwrite(DATEIZEIGER, INHALT). Sie schreibt den INHALT an die Position von DATEIZEIGER (Daten die hinter dieser Position stehen werden eventuell überschrieben!).
Und geschlossen wird die Datei dann mit fclose(DATEIZEIGER).
Damit lässt sich nun ein ganz einfacher Counter schreiben, der speichert wie oft die Seite geladen wurde und diese Zahl ausgibt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
/*lesen*/
$datei = fopen("counter.txt","r+"); //datei zum lesen oeffnen
$klicks = fgets($datei); //die aktuelle zahl einlesen
fclose($datei); //datei schliessen

/*ausgeben*/
$klicks++; //um eins erhoehen
echo "Bisherige Klicks: " . $klicks; //ausgeben

/*schreiben*/
$datei = fopen("counter.txt","w+"); //datei zum schreiben oeffnen
fwrite($datei, $klicks); //neue zahl in die datei schreiben
fclose($datei); //datei schliessen
?>

Das ganze geht natürlich effizienter wenn man die Datei nur einmal öffnet. Probiert's aus! Download: dateien.bsp.tgz (603,00 B)

© 2009-2017 by Martin Scharm