PHP-Einfach.de
  • PHP Tutorial
  • MySQL Tutorial
  • Für Fortgeschrittene
  • Webhosting
  • Forum

Dateien schreiben

10. Februar 2020
  1. Home
  2. »
  3. PHP Tutorial
  4. »
  5. Dateien schreiben

Buchtipp: Weniger schlecht programmieren

Um in Textdateien schreiben zu können, existiert in PHP die Funktion file_put_contents($filename, $data) . Als erstes Argument erwartet die Funktion den Dateinamen, als zweiten die Daten die man in die Datei schreiben möchte. Ist die Datei noch nicht vorhanden, so wird diese erstellt. Falls sie bereits vorhanden ist, wird der Inhalt überschrieben.

Inhaltsverzeichnis

  • 1 Datei überschreiben
  • 2 Text an Datei anhängen
  • 3 Arbeiten mit implode und explode

Datei überschreiben

Möchte man beispielsweise eine per GET übergebene Variable in eine Text-Datei schreiben, geht dies so:

1
2
3
4
5
6
<?php
$name = $_GET["name"];
$zeile = "Per GET wurde der Name $name übergeben \r\n";
file_put_contents("beispiel.txt", $zeile);
echo "beispiel.txt wurde überschrieben";
?>

Rufen wir diese Datei mit dem Parameter ?name=Max auf, so wird in der beispiel.txt der Satz Per GET wurde der Name Max übergeben stehen. Die Funktion file_put_contents() überschreibt den Inhalt der Datei. Sollte die Datei bereits existieren, so geht der Inhalt verloren.

Natürlich können wir auch eine Datei erst auslesen bevor wir diese überschreiben. Beispielsweise möchten wir einen einfachen Besucherzähler programmieren. Dazu legt im Ordner mit unserem PHP-Script per Editor eine Textdatei counter.txt an und schreibt eine 0 in diese. Unser Script zum Auslesen dieser Datei, zum Erhöhen der Zahl, und zum Ausgeben des Textes sieht wie folgt aus:

1
2
3
4
5
6
<?php
$counter = file_get_contents("counter.txt"); //Einlesen des Wertes
$counter++; //Wert um 1 erhöhen
file_put_contents("counter.txt", $counter); //Abspeichern des Wertes
echo "Diese Datei wurde bereits $counter mal aufgerufen";
?>

 

Text an Datei anhängen

Möchte man eine Datei nicht überschreiben, sondern Wert an die Datei anhängen, so muss man der Funktion file_put_contents() als drittes Argument die Konstante FILE_APPEND übergeben.

1
2
3
4
5
6
<?php
$name = $_GET["name"];
$zeile = "Per GET wurde der Name $name übergeben \r\n";
file_put_contents("beispiel.txt", $zeile, FILE_APPEND);
echo "beispiel.txt aktualisiert";
?>

Rufen wir diesen Script mit verschiedenen GET-Parametern auf, beispielsweise zuerst mit ?name=Max, dann mit ?name=Lena, so finden wir für jeden Aufruf eine neue Zeile in der beispiel.txt.

Arbeiten mit implode und explode

Im Artikel zu PHP Arrays habt ihr bereits die zwei nützlichen Funktionen implode() und explode() kennengelernt, mit denen ihr ein Array zu einem String zusammenfügen könnt oder einen String anhand von Trennzeichen auftrennen könnt. Diese zwei Funktionen werden sehr nützlich, wenn ihr mit Textdateien arbeitet.

Nachfolgend bauen wir eine sehr einfache Registrierung und einen internen Bereich. Dieses Beispiel ist sehr unsicher und sollte in echten Systemen nicht verwendet werden. Aber es illustriert gut, wie implode() und explode() im Zusammenhang mit Dateien verwendet werden kann.

Schritt 1: Registrierung

Zuerst benötigen wir ein Formular, in dem wir den Namen, die E-Mail Adresse und das Passwort abfragen. Diese Angaben hängen wir dann an die users.txt an.

Die Seite registrierungsformular.php sieht wie folgt aus:

1
2
3
4
5
6
<form action="registrierung.php" method="post">
Name: <input type="text" name="name" /><br />
E-Mail: <input type="text" name="email" /><br />
Passwort: <input type="password" name="passwort" /><br />
<input type="submit" value="Registrieren" />
</form>

Danach die registrierung.php, die die Daten aus dem Formular an die Datei users.txt anhängt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$passwort = $_POST['passwort'];
$user_info = array($email, $passwort, $name);
 
if(!empty($name) AND !empty($email) and !empty($passwort)) {
   $eintrag = implode(";", $user_info)."\r\n";
   file_put_contents("users.txt", $eintrag, FILE_APPEND);
   echo "$email wurde erfolgreich registriert";
} else {
   echo "Bitte alle Felder ausfüllen";
}
?>

Sofern alle drei Felder ausgefüllt wurden, verbinden wir die drei Elemente per implode() und nutzen das Semikolon als Trennzeichen. An das Ende von jedem Eintrag schreiben wir noch einen Zeilenumbruch (für Windows per \r\n) und fügen per file_put_contents() diesen Eintrag an das Ende der users.txt an. In der users.txt sollte also in jeder Zeile ein Benutzereintrag im Format email;passwort;name stehen.

Für das loginformular.php fragen wir die E-Mail Adresse und das Passwort ab:

1
2
3
4
5
<form action="login.php" method="post">
E-Mail: <input type="text" name="email" /><br />
Passwort: <input type="password" name="passwort" /><br />
<input type="submit" value="Login" />
</form>

Etwas komplizierter wird die login.php. Hier durchlaufen wir alle Zeilen, überprüfen ob die E-Mail Adresse und das Passwort stimmen. Ist dies der Fall, begrüßen wir den Benutzer mit seinem Namen:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$email = $_POST["email"];
$passwort = $_POST["passwort"];
 
$users = file("users.txt");
foreach($users AS $line)  {
   $user_info = explode(";", $line);
   if($user_info[0] == $email AND $user_info[1] == $passwort) {
       echo "Hallo ".$user_info[2];
   }
}
?>

Zuerst laden wir per file("users.txt") alle Zeilen der users.txt. Diese Zeilen durchlaufen wir dann mittels foreach-Schleife. Die Variable $line enthält dann immer einen Eintrag im Format email;passwort;name. Sollten die eingebene E-Mail-Adresse und das eingegebene Passwort aus dem Login-Formular mit dem Eintrag in der users.txt übereinstimmen, begrüßen wir den Benutzer mit seinem Namen.

Autor: Nils Reimers
Zurück: Dateien lesen
Weiter: Datum und Uhrzeit

PHP Tutorial

  • Installation
  • Webspace
  • Erste Schritte
  • Text ausgeben per echo
  • Kommentare
  • Variablen
  • Rechnen mit Variablen
  • $_GET und $_POST
  • if-Anweisungen
  • Vergleichsoperatoren
  • Logische Operatoren
  • Übungsaufgaben
  • while-Schleife
  • for-Schleife
  • Arrays
  • Dateien lesen
  • Dateien schreiben
  • Datum und Uhrzeit
  • E-Mails mit PHP versenden
  • Suchen und Ersetzen
  • Sessions
  • Eigene Funktionen
  • Andere PHP Dateien einbinden
  • Dateiupload
  • Cookies
  • Konstanten
  • Reguläre Ausdrücke
  • Überblick: Wichtige PHP Funktionen
Mit freundlicher Unterstützung von:
  • Punkt191 Werbeagentur

Hoster – Geringste Ausfallzeit

  1. netcup Ø 0 Min.
  2. webgo Ø 0 Min.
  3. Linevast Ø 3 Min.
  4. All-Inkl.com Ø 4 Min.
  5. checkdomain Ø 4 Min.
  6. dogado Ø 6 Min.
  7. Strato Ø 8 Min.
  8. manitu Ø 10 Min.
  9. 1&1 Ø 10 Min.
  10. DomainFactory Ø 14 Min.
» Mehr erfahren

Impressum | Datenschutz | Auf PHP-Einfach.de werben

© PHP-Einfach.de 2003 - 2025

Cookie-Zustimmung verwalten
Um dir ein optimales Erlebnis zu bieten, verwenden wir Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wenn du diesen Technologien zustimmst, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn du deine Zustimmung nicht erteilst oder zurückziehst, können bestimmte Merkmale und Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Anbieter verwalten Lese mehr über diese Zwecke
Einstellungen ansehen
{title} {title} {title}