[[cookies:cookielektion1|Lektion 1 - Cookies auf Zeit]]
====== Textdateien auf dem Server ======
Für die Serverprogrammiersprache PHP ist dieses Kapitel sehr wichtig. Hier lernst du, wie man Daten aus Dateien auslesen bzw. ablegen kann. Dafür gibt es unterschiedliche vordefinierte Funktionen, welche zunächst an Beispielen vorgestellt werden. Alle zusammen sind notwendig, wenn man eine Andwendung wie beispielsweise einen Besucherzähler programmieren möchte.
===== Anlegen einer Textdatei =====
Lege die Datei ''nachname.txt'' mit dem Inhalt //"Mein Name ist Vorname Nachname und ich gehe auf das AEG in RT"// auf dem Server an. Sie sollte im gleichen Verzeichnis sein wie deine ''index.php''.
===== Dateien zum Lesen öffnen =====
Die Funktion
fopen();
mit den Argumenten "Dateiname" und "Modus" öffnet eine serverliegende Datei. Der Modus entscheidet dabei, ob du entweder
* ''r'' => **lesen/read**,
* ''r+'' => **lesen und schreiben**
kannst. Es gibt noch weitere Modi, die aber nicht ganz so wichtig bzw. nicht unbedingt sehr brauchbar sind.
Bei dem Modus ''r+'' beginnt das Lesen und Schreiben am Anfang der Datei - die Position eines Art "Cursors" bestimmt dabei ein **Zeiger**.
Der Dateizeiger wird von der Funktion ''fopen()'' positioniert. Wenn die Datei dann einmal geöffnet ist, arbeitet man sich mit diesem Dateizeiger durch. Deswegen muss man den Status des Zeigers in einer Variablen speichern, um später an dieser Stelle weiterarbeiten zu können. Die Variable kann einen beliebigen Namen erhalten, wir nennen diese hier im Beispiel ''$fp'' wie ''file pointer''.
Beispiel:
$fp = fopen("nachname.txt", "r+");
===== Daten auslesen =====
Hier kommt die Funktion
fgets();
ins Spiel. Als Argument werden ihr ein Dateizeiger und die maximale Zahl an Bytes übermittelt, welche ausgelesen werden sollen. Bei 10 Byte werden also bis zu neun Stellen gelesen, welche ebenfalls in einer Variablen gespeichert werden müssen.
für das Beispiel oben:
$content1 = fgets($fp, 10);
Der Dateizeiger wandert dabei immer weiter und bleibt nach Erreichen der maximalen Zahl an Bytes stehen, bis eine weitere Ausgabe erfolgt.
===== Übung =====
{{:htmlcss:work_64.png|}}
Programmiere in deine ''index.php''-Datei eine Ausgabe deiner ''nachname.txt''-Datei, wobei
- zuerst 15 Byte
- danach 25 Byte
- der restliche Inhalt
in je einer Zeile ausgegeben werden.
Hinweis: Der Modus ''r+'' funktioniert hier noch nicht uneingeschränkt. Verwende deswegen zunächst den Modus ''r'' für ''read''.
----
Um den Inhalt einer Datei zu verändern, muss der Dateizeiger an geeigneter Stelle stehen. Ist dieser nach einer Ausgabe irgendwo stehen geblieben, so kann man ihn ganz einfach wieder an den Anfang der Datei setzen.
===== Dateizeiger an den Dateianfang setzen =====
Die Funktion
rewind("Dateizeiger");
macht nichts weiteres, als den Dateizeiger an erste Stelle zu setzen - vergleichbar mit einem Cursor, der mit POS1 an die erste Stelle rückt.
===== Daten in eine Textdatei schreiben =====
Die Funktion
fputs();
schreibt Daten in eine Datei. Ihre Argumente sind ein Dateizeiger und die Daten.
Im Beispiel:
fputs($fp, "Was ist los");
Es muss sich um irgendeine Art von Daten handeln, es muss kein ''String'' sein. Eine Variable mit einem bestimmten Inhalt oder verschiedene Arrayfelder können ebenfalls in die Textdatei gespeichert werden.
===== Textdatei schließen =====
Die Funktion
fclose("Dateizeiger");
schließt die Datei und nimmt den Dateizeiger sozusagen aus dem Text heraus.
===== PROBLEME =====
Auf dem Webserver funktioniert das Auslesen wunderbar, sobald es allerdings ans Schreiben der Datei geht, haben wir nicht genügend Rechte! Deswegen müssen wir auf dem Server die Datei ''nachname.txt'' freischalten.
Unter den Eigenschaften der Datei kann man auf dem Server (WinSCP) der Gruppen bzw. Anderen die Schreibrechte mit einem Häkchen bei "W" vergeben. Damit ist der letzte Schritt getan und du kannst dich an folgende Aufgabe machen.
===== Übung =====
{{:htmlcss:work_64.png|}}
- Programmiere obige Eingabe und teste erneut das Beispiel mit der Ausgabe.
- Erstelle einen Hit-Counter, der jedes Mal um einen Wert steigt, sobald jemand deine Startseite besucht bzw. auf den Reload-Button klickt. (Tipp: nenne die Textdatei ''counter.txt'', sie hat den Inhalt 0 (0 Hits beim ersten Aufruf).
- Verändere den Hit-Counter so, dass es zu einem tatsächlichen Besucherzähler wird.
Tipp zu Aufgabe 3: Verwende ein Cookie, das für einen Tag gültig ist.
[[cookies:cookielektion3|Umfrage selbst gemacht]]