» Startseite
» Newsübersicht
» Kontakt
» Impressum

» Forum
» Gästebuch

» Einführung PHP
   » Anfang
   » Erste Schritte
   » Variablen
   » if-Anweisung
   » Log. Operatoren
   » Übung
   » Dateien
   » Schleifen
   » Array
   » Dateien Teil 2
   » Datum & Zeit
   » Mail Funktion
   » Sessions

» Einführung MySQL

PHP-Einfach.de

Counterdienst:
Digicount.de
Unser werbefreier Counter- und Statistikdienst

Dateien

Bisher sind wir in der Lage, mit Variablen zu arbeiten, und diese zu überprüfen.
Zwar können wir so schon einen geschützten Bereich programmieren, aber oft möchte man ja bestimmte Werte auch abspeichern. Dies können z.B. Daten aus einem Formular oder ähnliches sein.
Das abgespeicherte möchte man dann später natürlich auch wieder ausgeben. Um genau das geht es in diesem Abschnitt.

Zunächst ist zu beachten, dass das Arbeiten mit Dateien immer in drei Schritten abläuft. Eine Datei wird geöffnet, danach wir der Inhalt in die Datei geschrieben oder aus der Datei gelesen (oder auch beides) und zum Schluss wird sie wieder geschlossen. Das öffnen von einer Datei ist eigentlich recht einfach:
<?php
$datei = fopen(Dateiname, Modus);
?>
Der Befehl fopen öffnet die Datei Dateiname, der Modus bestimmt, was wir mit der Datei machen möchten (lesen bzw. schreiben).
Außerdem müssen wir darauf achten, ab welcher Zeile PHP anfängt zu lesen (Anfang oder Ende der Datei).
Auch wichtig ist, ob PHP eine Datei anlegt oder nicht, sofern diese noch nicht existiert. Wenn man mit PHP neue Dateien erstellen möchte, dann sollte man nicht r bzw. r+ benutzen.

Folgende Modi kann man benutzen:

Modus Funktion Dateizeiger Datei anlegen
r Lesen Anfang Nein
r+ Lesen und Schreiben Anfang Nein
w Schreiben Anfang Ja
w+ Lesen und Schreiben Anfang Ja
a Schreiben Ende Ja
a+ Lesen und Schreiben Ende Ja

Wenn w / w+ benutzt, musst du darauf achten, das der Inhalt des Dokuments ohne Nachfrage überschrieben wird.

Für das Anlegen eines Logfiles benutzt man den Modus a, da der neue Eintrag immer am Ende angehängt wird.

Wir machen jetzt als Beispiel einen simplen Textcounter (ohne Reloadsperre), denn an diesem Beispiel lernen wir so gut wie alles, was wir später brauchen.

Zu erst öffnen wir eine Datei, ich empfehle eine Textdatei (counter.txt) zu benutzen, aber man kann auch jedes andere Format benutzen.

<?php
$datei = fopen("counter.txt","r+");
?>
Bei dem Modus r+ müssen wir darauf achten, das es diese Datei bereits vorhanden ist.

Dann wollen wir ja abfragen, wie viele Personen diese Seite schon aufgerufen haben, deswegen lesen wir die Datei zuerst aus.
<?php
$counterstand = fgets($datei, 10);
?>
Mit fgets lesen wir eine Datei, der erste Wert in der Klammer gibt an, welche Datei wir lesen, der zweite Wert wie viele Zeichen wir lesen.
In diesem fall 10 Zeichen, weil ein Counter i.d.R. nicht mehr als 10 Zeichen hat.
Das gelesene Speichern wir in der Variable $counterstand.

Aber was ist wenn diese Datei leer ist?
Dazu benutzen wir eine einfache if-Anweisung.
<?php
if($counterstand == "")
   {
   $counterstand = 0;
   }
?>
Hier wird überprüft, ob die Datei einen Inhalt hat, wenn sie keinen Inhalt hat, so wird der Counterstand auf 0 gesetzt.

Wir wollen ja, wenn der Besucher die Site besucht, den Counterstand um 1 erhöhen.
Dies geht mit $counterstand++;.
Dabei wird der Wert von $counterstand um 1 erhöht. Der neue Wert ist wieder in $counterstand gespeichert.

Danach müssen wir dem Besucher die Zahl ausgeben, das machen wir ganz einfach mit echo.
<?php
$counterstand++;
echo $counterstand;
?>
Durch das lesen des Counterstandes/der Datei, ist der 'Dateizeiger' nicht mehr am Anfang der Datei.
Würden wir jetzt den neuen Wert speichern, so würde der alte Wert nicht überschrieben werden. So würde aus dem Counterstand 1 plötzlich eine 12 werden.
<?php
rewind($datei);
?>
Mit rewind setzten wir den Dateizeiger wieder an den Anfang der Datei.

Und anschließend tragen wir den neuen Wert wieder in die Datei ein.
<?php
fwrite($datei, $counterstand);
?>
Mit fwrite (man kann auch fputs benutzen) tragen wir in die Datei ($datei) den neuen Counterstand (der in der Variable $counterstand ist) ein.

Zum Schluss schließen wir noch die Datei:
<?php
fclose($datei);
?>
Unser gesamte Code sieht dann so aus:
<?php
$datei = fopen("counter.txt","r+");
$counterstand = fgets($datei, 10);
if($counterstand == "")
   {
   $counterstand = 0;
   }
$counterstand++;
echo $counterstand;
rewind($datei);
fwrite($datei, $counterstand);
fclose($datei);
?>
Durch die Arbeit mit Dateien sind auch noch viele weitere Anwendungen möglich, z.B. Logfiles, Newsscripts, Gästebücher und sogar Foren.

Allerdings sind diese Sachen dann meistens alle recht Simpel gehalten und bieten kaum weitere Funktionen, da dies sehr schwer zu realisieren ist.
Deswegen sollten wir uns nicht solange damit aufhalten, sondern lieber mit Datenbank (MySQL) arbeiten.

Wichtig:
Wenn ihr mit diesen Prinzip auf eurem Server (Webspace) arbeitet, dann müsst ihr den Dateien, in denen ihr etwas schreiben möchtet, die Schreibrechte CHMOD(unix) 777 geben.
Wie das geht erfahrt ihr hier.

Um eine Datei komplett auszugeben brauchen wir als erstes eine Schleife.

Autor Andavos

News

Forum

Newsletter


© PHP-Einfach.de 2003 - 2007