Textdateien
Mit PHP haben Sie die Möglichkeit, Dateien zu erstellen, zu bearbeiten oder zu löschen.
Bevor Sie auf Dateien zugreifen sollten Sie überprüfen, ob die Datei vorhanden ist.
<?php
$vorhanden = file_exists("probe.txt") // Rückgabe True oder False
$groesse = filesize("probe.txt") // Dateigröße
$type = filetype("probe.txt") // Dateityp Rückgabe file oder dir
?>
Zugriff auf Dateien
Mit dem folgenden Beispiel lässt sich auf einfache weise eine Datei zum Browser übertragen
<?php
if (file_exists("info.txt")) readfile("info.txt")
?>
Anzeigebeispiel
Tja, jetzt haben wir den Salat. Wie Sie sehen, wird diese Textdatei ohne Zeilenumbruch dargestellt. Sie
haben die Möglichkeit, in Ihren Textdateien am Zeilenende ein <br>
einzufügen
Anzeigebeispiel
oder Sie setzen statt readfile()
die Funktion file()
ein. Hier wird die Datei
in einem Array geschrieben, und kann dann Zeilenweise ausgegeben werden.
<?php
if (file_exists("info.txt")) {
$datei = file("info.txt") ;
foreach($datei as $zeile) {
echo "$zeile<br>" ;
}
}
?>
Anzeigebeispiel
Aber sicherlich möchten Sie Dateien auch bearbeiten, dazu muss man eine Datei ersteinmal mit der
Funktion fopen()
öffnen. Man muss allerdings wissen, wie die Datei geöffnet werden
soll, zum lesen oder schreiben.
Beispiel | Beschreibung |
fopen("datei.txt","w") |
Öffnet eine Datei zum schreiben. Der Dateizeiger wird am Anfang der Datei gesetzt.
Existiert die Datei nicht, wird diese angelegt |
fopen("datei.txt","w+") |
Öffnet eine Datei zum schreiben und lesen. Der Dateizeiger wird am Anfang der Datei gesetzt.
Existiert die Datei nicht, wird diese angelegt |
fopen("datei.txt","r") |
Öffnet eine Datei zum lesen. Der Dateizeiger wird am Anfang der Datei gesetzt. |
fopen("datei.txt","r+") |
Öffnet eine Datei zum schreiben und lesen. Der Dateizeiger wird am Anfang der Datei gesetzt. |
fopen("datei.txt","a") |
Öffnet eine Datei zum schreiben. Der Dateizeiger wird an das Ende der Datei gesetzt.
Existiert die Datei nicht, wird diese angelegt |
fopen("datei.txt","a+") |
Öffnet eine Datei zum lesen schreiben. Der Dateizeiger wird an das Ende der Datei gesetzt.
Existiert die Datei nicht, wird diese angelegt |
Hier noch einmal kurz zusammengestellt:
Modus | Lesen | Schreiben | Dateizeiger | Kürzen | Erzeugen |
r | Ja | Nein | Anfang | Nein | Nein |
r+ | Ja | Ja | Anfang | Nein | Nein |
w | Nein | Ja | Anfang | Ja | Ja |
w+ | Ja | Ja | Anfang | Ja | Ja |
a | Nein | Ja | Ende | Nein | Ja |
a+ | Ja | Ja | Ende | Nein | Ja |
Textcounter
Als Beispiel möchte ich Ihnen ein Beispiel zeigen, wie man ein Counter mit einer Textdatei erzeugt.
Als erstes wird geprüft, ob die Datei vorhanden ist, und wenn nicht wird diese mit den Wert 0 angelegt
<?php
$datei = "counter.txt" ;
if (!file_exists($datei)) {
$handle = fopen($datei,"w") ;
fwrite($handle,"0") ;
fclose($handle) ;
}
?>
Die Funktion fopen()
liefert den Verweis (Handle) an die Variable $handle. Mit fwrite
wird der Wert in die Datei übergeben. Schließlich wird die Datei mit fclose
wieder
geschlossen.
Jetzt öffnen wir die Datei zum lesen, um den aktuellen Counterstand zu ermitteln.
<?php
$handle = fopen($datei,"r") ;
$counter = fread($handle,8) ;
fclose($handle) ;
?>
Mit fread()
lesen wir eine bestimmte anzahl von Zeichen aus der Datei aus. Ich nehme an,
dass eine acht-stellige Zahl erst einmal ausreicht.
Zum Schluss erhöhen wir den Counter um einen Zähler, und schreiben diese mit fwrite()
zurück in die Datei.
<?php
$counter++ ;
$handle = fopen($datei,"w") ;
$counter = fwrite($handle,$counter) ;
fclose($handle) ;
?>
Komplett sieht der Counter die folgt aus:
<?php
$datei = "counter.txt" ;
if (!file_exists($datei)) {
$handle = fopen($datei,"w") ;
fwrite($handle,"0") ;
fclose($handle) ;
}
$handle = fopen($datei,"r") ;
$counter = fread($handle,8) ;
fclose($handle) ;
$counter++ ;
$handle = fopen($datei,"w") ;
fwrite($handle,$counter) ;
fclose($handle) ;
?>
<html>
<head>
<title>Mein Counter</title>
<head>
<body>
<h1>Guten Tag</h1>
<p>diese Seite wurde <?=$counter;?> mal aufgerufen.</p>
</body>
</html>
Anzeigebeispiel
Grafikcounter
Aber vielleicht möchten Sie statt einen Textcounter eine grafische Darstellung. Dazu legen
Sie zuerst einmal 10 Dateien mit den Namen "0.gif" bis "9.gif" an.
Die Variable $counter aus unseren Textcounter zerlegen wir mit Hilfe der Funktion substr()
in Einzelteile. Diese Funktion möchte ich Ihnen vorher nochmal nahebringen.
<?php
$wert = substr("Zeichenkette",1,5);
?>
Die 1 in diesem Beispiel bedeutet, da PHP praktisch wie alle Funktionen 0 beginnt zu Zählen, dass
ab den zweiten Buchstaben beginnt, fünf Buchstaben eingelesen werden. Die Variable $wert erhäht
also den Wert "eiche"
Mit der Funktion strlen()
haben Sie die möglichkeit, die länge einer Zeichenkette
auszulesen. Den Grafikcounter speichern wir mit Hilfe einer Verkettungsoperator .=
in die
Variable $grafikcounter
<?php
$laenge = strlen($counter);
$grafikcounter ="" ;
for ($i = 0; $i < $laenge; $i++ ) {
$zahl = substr($counter, $i, 1);
$grafikcounter .= "<img src=\"$zahl.gif\">" ;
}
?>
Dieses fügen wir nun in unseren Textcounter unterhalb von fclose($handle) ;
hinzu, und ersetzen <?=$counter;?>
mit <?=$grafikcounter;?>
.
Anzeigebeispiel
Dieses ist nur ein Demo, um zu zeigen, wie man mit Textdateien arbeiten kann. Um diesen Counter
richtig einzusetzen, müsste man noch eine Reload. bzw. IP-Sperre einbauen. Dazu werde ich
später im Bereich MySQL kommen.