Webprogrammierung — 13. Lektion

Arbeit mit Dateien

Um Daten länger als nur eine Programmausführung lang zu behalten, müssen sie gespeichert werden. Dies kann auf dem Server geschehen oder im Browser. Letzteres tritt bei Cookies auf. Auf Clientseite gespeicherte Daten können vom Nutzer gelöscht werden und von anderen Programmen auf dem Server nicht genutzt werden. Beim Speichern auf dem Server besteht die Möglichkeit, die Daten in eine Datenbank oder eine Datei zu schreiben. In den folgenden Abschnitten geht es um das Ablegen von Daten in Dateien.

Existenz einer Datei

Damit eine bereits existierende Datei nicht unbeabsichtigterweise überschrieben wird, kann man überprüfen, ob eine Datei existiert. Die Funktion
file_exists(Dateiname)
gibt true zurück, wenn eine Datei mit dem angegebenen Dateinamen existiert, sonst false.

Öffnen einer Datei

Bevor man in eine Datei schreiben kann oder aus ihr lesen kann, wird sie geöffnet. Dabei wird ein sogenannter Handle erstellt, über den die weiteren Vorgänge (Schreiben, Lesen, Schließen) ablaufen. Die Funktion
fopen(Dateiname,Modus)
öffnet die Datei mit dem angegebenen Namen und gibt den Handle zurück, den man auf einer Variablen für die weiteren Dateioperationen speichern sollte, oder gibt false zurück, falls die Datei nicht geöffnet werden konnte. Da in diesem Falle keine weiteren Dateioperationen möglich sind, sollte man diesen Fall abfangen.
Der Modus gibt an, für welche Operationen die Datei geöffnet wird. Hier werden die folgenden Modi verwendet: Weitere Modi sind auf der Seite https://www.php.net/manual/de/function.fopen.php beschrieben.

Schließen einer Datei

Nach Abschluss von Lese- und Schreiboperationen sollte eine Datei auch wieder geschlossen werden, damit auch andere Programme darauf zugreifen können. Die Funktion
fclose(Handle)
schließt die geöffnete Datei, bei deren Öffung das angegebene Handle zurückgegeben wurde.

Löschen einer Datei

Die Funktion
unlink(Dateiname)
löscht die Datei mit dem angegebenen Namen und gibt true zurück, wenn dies erfolgreich war, und false sonst.

Datei schreiben

Vor dem Schreiben muss eine Datei erst geöffnet werden – siehe Abschnitt zuvor. Mit der Funktion
fwrite(Handle,Text)
schreibt man den angegebenen Text in die Datei mit dem angegebenen Handle an die Stelle, wo der Dateizeiger steht.

Datei lesen

Die Größe einer Datei gibt die Funktion
filesize(Dateiname)
zurück.
Vor dem Schreiben muss eine Datei erst geöffnet werden – siehe oben. Mit der Funktion
fread(Handle,Länge)
liest man so viele Zeichen aus der Datei mit dem angegebenen Handle ab der Stelle, wo der Dateizeiger steht.

Datei fortschreiben

In diesem Beispiel wird eine Nutzereingabe so in eine Datei geschrieben, dass vorherige Eingaben erhalten bleiben. Um die verschiedenen Einträge auseinander halten zu können, werden sie durch Trennzeichen getrennt, die sonst nicht auftreten. Das wird dadurch erreicht, dass die Eingabe URL-kodiert in die Datei geschrieben wird und somit keine Und-Zeichen auftreten. Zum Anzeigen werden die Texte wieder dekodiert. Mit der Funktion explode werden die einzelnen Eingaben wieder getrennt und in ein Array eingetragen. Die Funktion count gibt die Anzahl der Elemente zurück. Jedes einzelne Element wird nicht nur dekodiert, sondern es werden noch zwei Zeichen in ihre HTML-Entsprechung gebracht: Zeichen für Zeilenumbrüche werden durch <br> ersetzt und Leerzeichen durch &nbsp;. Das Ersetzen geschieht durch die Funktion str_replace.