Informatik :: PHP + MySQL :: Fremde Dateien in PHP
[einbinden] | [lesen / schreiben] | Aufgaben (Gästebuch) |
[1] | [2] | [3] |
Es gibt zwei Möglichkeiten, den Inhalt einer anderen Datei in eine php-Datei einzubinden.
include("datei.inc");
Der Inhalt der Datei datei.inc wird eingelesen und ausgeführt - so, als ob diese Datei allein aufgerufen werden würde.
Sinnvollerweise sollte die eingebundene Datei im Browser ausführbaren Code enthalten.
Der Name der include-Datei (einschließlich der Extension) kann frei gewählt werden.
require("datei.inc");
Auch hier wird der Inhalt der Datei datei.inc eingelesen, aber diesmal so, als ob er an genau dieser Stelle des Quelltextes stehen würde.
Hinweis:
Falls es nicht sicher ist, ob die Datei wirklich existiert (denn dann käme eine Fehlermeldung), kann man das mit der Funktion file_exists("dateiname") einfach prüfen.
Beispiel:
if (file_exists("datei.inc")) { require("datei.inc"); } else { echo "Datei nicht vorhanden"; }
Mittels PHP kann man vorhandene Dateien (die natürlich auf dem entfernten Webserver liegen und Text enthalten) lesen und neuen Text in die Datei schreiben.
Somit können Nutzerdaten (z.B. Einträge in ein Gästebuch) gespeichert und wieder abgerufen werden.
Um mit einer Datei zu arbeiten (Lesen des Inhaltes oder Ändern des Inhaltes) muss die Datei zunächst geöffnet werden.
Dazu verwendet man die PHP-Funktion fopen("dateiname","zugriffsart").
Folgende Zugriffsarten stehen dabei zur Verfügung:
Zugriffsart | Beschreibung |
---|---|
r | nur lesend, beginnend am Dateianfang |
r+ | lesend und schreibend, beginnend am Dateianfang |
w | nur schreibend, die Datei wird neu erzeugt, existiert sie bereits, wird der bisherige Inhalt gelöscht |
w+ | lesend und schreibend. Ansonsten wie "w" |
a | nur schreibend. Begonnen wird am bisherigen Dateiende (a wie append = anhängen). Existiert sie nicht, wird versucht, sie zu erzeugen |
a+ | lesend und schreibend. Ansonsten wie "a". Achtung: Beim Lesen steht am Ende der Datei nichts mehr |
Beispiele:
Die Datei daten.dat soll nur zum Lesen ab Dateianfang geöffnet werden. | fopen("daten.dat","r") |
Die Datei nutzer.dat soll lesend und schreibend geöffnet werden. Falls die Datei nicht vorhanden ist, soll sie erzeugt werden. Ist sie bereits vorhanden soll der bisherige Inhalt gelöscht werden. |
fopen("nutzer.dat","w+") |
Die Datei nutzer.dat soll lesend und schreibend geöffnet werden. Falls die Datei nicht vorhanden ist, soll sie erzeugt werden. Ist sie bereits vorhanden soll der neue Inhalt am bisherigen angehangen werden. |
fopen("nutzer.dat","a+") |
Im Erfolgsfall gibt die Funktion fopen("dateiname","zugriffsart") einen Dateizeiger (z.B. Resource id #3) zurück.
Sollte das Öffnen der Datei scheitern, so wird nichts zurückgegeben.
Dieser Dateizeiger ist für die weitere Arbeit mit der Datei notwendig. Deshalb wird er in einer PHP-Variablen gespeichert.
Damit ergibt sich die erste Anweisung:
$f=fopen("dateiname","zugriffsart")
Will man eine vorhandene Datei (muss nicht geöffnet sein) vollständig lesen,
dann verwendet man am einfachsten die PHP-Funktion
readfile("dateiname")
Für das Lesen einer bereits geöffneten Datei stehen u.a. folgende PHP-Funktionen zur Verügung:
PHP-Funktion | Beschreibung |
---|---|
fgetc(dateizeiger) | Damit kann man aus einer geöffneten Datei ein einzelnes Zeichen von der aktuellen Position des Dateizeigers auslesen. Diese Funktion gibt false zurück, falls der Dateizeiger am Ende der Datei steht und deshalb nicht mehr auf ein gültiges Zeichen verweist. |
fgets(dateizeiger,length) | Damit kann man aus einer Datei eine Zeile mit der Länge length (in
Byte) auslesen. Sollte die Zeile länger sein als der in length vorgegebene Wert, so wird die Zeile bis zur angegebenen Länge gelesen und der Rest abgeschnitten. Kommt es beim Lesen der Datei zu einem Fehler, so wird false zurückgeliefert. |
file_get_contents("dateiname") | Damit kann man aus einer Datei den gesamten Inhalt auslesen. Kommt es beim Lesen der Datei zu einem Fehler, so wird false zurückgeliefert. |
Weitere PHP-Funktionen zum Lesen in einer Datei findest du hier.
Auch für das Lesen in einer Datei empfiehlt sich wieder eine PHP-Variable, in der entweder der gelesene Dateiinhalt oder false steht.
Also z.B.:
$inhalt=file_get_contents("datei.txt")
Für das Schreiben in eine bereits geöffneten Datei steht die PHP-Funktion fwrite(dateizeiger,"zu_schreibender_Text",length) zur Verügung.
Der Parameter length ist dabei optional und bedeutet, dass nur maximal so viele Zeichen geschrieben werden.
Also z.B.:
fwrite($f,"<b>Hallo!</b>")schreibt <b>Hallo!</b> in eine geöffnete Datei.
Um eine noch geöffnete Datei wieder zu schließen verwendet man die PHP-Funktion fclose(dateizeiger)
Der Inhalt der Datei nutzer.dat soll zunächst gelesen, anschließend der Text "Alter=18" angefügt und erneut vollständig gelesen werden.
$zeiger = fopen("nutzer.dat","a+"); while (!feof($zeiger)) { $zeile = fgets($zeiger,120); echo $zeile; } $text="Alter=18"; fwrite($zeiger,$text); fclose($zeiger); echo "<br>"; readfile("nutzer.dat");
Aufgabe 1
Erstelle die Datei book1.php, die folgende Seite generiert:
Hinweise:
Aufgabe 2
Erstelle die Datei zaehler.php, die folgenden Zähler generiert:
Hinweise:
Aufgabe 3
Erstelle die Datei book2.php, die die Aufgaben 1 und 2 verbindet:
Hinweise: