Dateien

Daten, die später wieder gebraucht werden, können in Dateien geschrieben werden. So können Daten für einen Chat in einer solchen Datei gespeichert sein. Sobald die Datei aber im Verzeichnis des Webservers gespeichert ist, kann sie von jedem abgerufen werden, indem man die Adresse zur Datei eingibt. Ich will hier das Beispiel eines kleinen Chat-Clients erklären.

Die Grundlagen

Wir erstellen eine HTML Datei mit einem Formular zur Dateneingabe und einem

Feld. Die Datei chat.txt, die den gesamten Inhalt des Chats enthält, wird in regelmäßig Abständen abgefragt, und in das

Feld mittels Javascript gesetzt.

Die PHP Datei, die von dem Formular auf der Seite angesprochen wird, muss den eingegebenen Text verarbeiten (und evtl. den Nutzer, was ich hier nicht bespreche) und in die Datei chat.txt schreiben.

Die HTML Datei

Die Javascript Funktion zum Auslesen der Datei ist hier erklärt. Ich gehe davon aus, dass die Funktion in der Datei ajax.js liegt.

<html>
<head>
<title>kleiner Chat-Client</title>
<script src="ajax.js"></script>
 
</head>
<body>
<noscript>Bitte aktivieren Sie Javascript.</noscript>
<form method="post" action="inputchat.php">
<input type="text" name="text" size="40"><input type="submit" name="submit" value="Abschicken">
</form>
 
<script language="javascript">
function chatload() 
{
    load_file('chat.txt', 'chatcontent');
    setTimeout('chatload()',2000);
}
chatload();
</script>
 
<div id="chatcontent"></div>
 
</body>

Die PHP Datei

Was muss jetzt in der inputchat.php passieren? Die eingabedaten müssen von $_POST eingelesen werden, die Datei muss geöffnet, die bisherigen Daten eingelesen, die Daten aneinandergesetzt und in die Datei geschrieben und die Datei geschlossen werden.

<?php
if (isset($_POST["text"]))
{
    $eingabetext=$_POST["text"];
}
else
{
    # Reaktion auf ein ungültiges Formular (Bsp: zurückschicken auf die Chat-Seite).
};
 
if ($eingabetext==NULL)
{
    # Reaktion auf einen leeren Eingabetext (Bsp: zurückschicken auf die Chat-Seite).
}
else
{
    # Die Datei öffnen und in eine Variable packen. Das ist nicht der Inhalt der Datei!
    $datei=fopen("chat.txt","r+");
 
    # Die Datei einlesen und den Inhalt in eine Variable packen.
    $dateiText=fread($file);
    # Die Datei schließen.
    fclose($file); 
 
    # Die Datei wieder öffnen und den Inhalt der Datei löschen.
    $file=fopen("chat.txt","w+");
    # Den Eingabetext und den Inhalt der Datei zusammenfügen
    $newText=$eingabetext."<BR />\n".$dateiText;
    # Den Inhalt in die Datei schreiben.
    fwrite($file,$newText);
    # Die Datei wieder schließen
    fclose($file);
 
    # Den Nutzer zurück zur chat.htm leiten
    header("location:chat.htm");
    die();
};
?>

Wenn der Nutzer jetzt also von der inputchat.php wieder zur chat.htm zurückgeleitet wurde, wird er in dem <div> Bereich seinen Beitrag sehen. Neue Einträge werden mit diesem Code immer am Anfang angehängt. Wer das ganze noch verschönern will, kann in die chat.txt den Eingabetext formatiert eingeben lassen.

fopen

fopen() hat mehrere Parameter. fopen(string $filename, string $mode) reicht für die normalen Probleme aus. $filename wird durch den Dateinamen ersetzt (relativ oder absolut). $mode ist der Modus in dem die Datei geöffnet wird. Folgende Tabelle der Modi ist im PHP Handbuch angegeben:

ModusBedeutung
rÖffnet die Datei nur zum Lesen und positioniert den Dateizeiger auf den Anfang der Datei.
r+Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei.
wÖffnet die Datei nur zum Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert wird versucht sie anzulegen.
w+Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert, wird versucht sie anzulegen.
aÖffnet die Datei nur zum Schreiben. Positioniert den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert, wird versucht sie anzulegen.
a+Öffnet die Datei zum Lesen und Schreiben. Positioniert den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert, wird versucht sie anzulegen.

Der Befehl fopen der Programmiersprache C ist äquivalent zu dem PHP-Befehl.