HTML, CSS, PHP, MySQL

html-php.de

HTML & CSS Stylesheets Referenz JavaScript PHP MySQL Sonstiges Gästebuch Inhalt Impressum

[ Textdateien ] [ Dateizugriff ] [ Textcounter ] [ Grafikcounter ]

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.

BeispielBeschreibung
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:

ModusLesenSchreibenDateizeigerKürzenErzeugen
rJaNeinAnfangNeinNein
r+JaJaAnfangNeinNein
wNeinJaAnfangJaJa
w+JaJaAnfangJaJa
aNeinJaEndeNeinJa
a+JaJaEndeNeinJa

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.

back top next