Formulare und PHP
Entwicklung eines Feedback-Formulars
%Überschrift des Abschnitts eingeben
Ziel ist es, dass uns eine Nachricht auf der Homepage über ein Form-Eingabefeld hinterlassen werden kann. Die Nachricht soll in eine Textdatei am Server gespeichert werden.

Grundsätzlich Funktionieren FORMS so, daß der User bestimmte Daten eingibt/auswählt und irgendwann einmal Submit (also “senden”) drückt. Der Browser wandelt dann die Form-Daten in ein für den Webserver verstängliches Datenformat und sendet diese Daten an den Webserver zurück.
Wir erzeugen ein Form mit Dreamweaver, in dem uns eine Nachricht auf der Webpage hinterlassen werden kann (könnte ja ev. auch ein Eingabe-Feld mit der Überschrift “Ihre bester Witz sein”, im ernst). Wir speichern folgende Datei unter: nachricht.html auf der Festplatte.








%eventuell Bildlegende zum Screenshot
Formulare benötigen im allgemeinen folgende obige Komponenten:
- Einen SUBMIT-Knopf, der ein Formular absendet,
- Eine “ACTION”, die “ausgeführt” wird sobald der SUBMIT Knopf betätigt wurde
- und eine “METHOD” des SUBMIT Buttons (GET oder POST)

Kurz gesagt: bei POST werden die Form-Daten in PHP über $_POST ausgelesen und bei GET über $_GET.
Info: Ein Unterschied besteht darin, dass bei GET die Daten sozusagen in die URL übergeben werden, d.h. wäre eine gleiche URL im Cache, könnte es sei, dass die alte, sich im Cache befindliche Seite angezeigt wird. Bei POST werden vereinfacht gesagt die Daten nicht in die URL packt und somit auch der REQUEST immer an den Server gesendet (und eben nicht im Cache nachgesehen).

Zurück zum eigentlichen Skript:
Wie wollen das die “Kurznachricht” oder was auch immer in das Feld geschrieben wird bei uns in einer Datei am Webserver landet – und zwar sobald man SUBMIT drückt. Dazu braucht es gar nicht so viel “action”.
Wir schreiben ein PHP Script names “save_me.php”, dass bei SUBMIT ausgeführt werden soll, d.h. wir tragen in den Quellcode obiger html-Datei bei action=”” das auszuführende Skript ein, das sieht dann so aus: action=”save_me.php”

Wir bedienen uns beim vorigen Counter-Skript und änder beim fopen-Befehl r+ auf “a” - dies bedeutet die Datei wird zum Schreiben geöffnet und der File-Pointer ist am Ende der Datei, (a steht für append - also anfügen).
Wenn wir nun etwas in die Datei schreiben mit fputs, wird es ans Ende der Datei geschrieben.
Daten die bereits vorher stehen (also “vor” dem File-Pointer (“örtlich” also am Anfang der Datei) werden dadurch nicht beeinträchtig – bleiben somit erhalten. Wie beim Tagebuch, da setzt der Füller auch nach dem letzten Eintrag an).

Nachdem also der “Senden” Knopf der erstellten Form gedrückt wird, wird die Datei ”save_me.php” aufgerufen, da diese als “action” angegeben ist. Die aufgerufene Datei save_me.php bekommt die verwendeten Form-Daten übermittelt, die dann über $_POST... verwendet werden können.
In der aufgerufenen php-Datei kann man nun über $_POST['dieNachricht'] auf die eingegebenen Daten zugreifen.

Mit if ($_POST['dieNachricht'] != "") wird abgefragt, ob überhautp etwas eingegebn wurde, ansonsten ist ja nichts zu speichern und die Nachricht leer, das drückt sich durch 2 Anführungszeichen "" nebeneinander aus (zwischen denen somit kein Inhalt Platz hat).

Man kann die Zeile wie folgt lesen: Wenn von der HTML-Form eine Nachricht in der Variablen $_POST['dieNachricht'] übergeben wurde die ungleich (!=) einer “leeren Nachricht” ("")ist, dann speichere sie, ansonsten gib die Fehlermeldung: echo "Sie haben leider keine Nachricht eingegeben!"; aus.
Das Speichern geht äquivalent zur Counter-Speicherung, nur eben am Ende der Datei;

fputs($fp,"\n"); gibt noch ein “NewLine” Zeichen aus, damit ein Zeilenumbruch entsteht, wenn man die Datei nachrichten.txt mit WordPad öffnet.
Wieder ist zu achten, dass die Datei nachrichten.txt am Server Schreibrechte haben muß.

Tipp: Um nicht von GET oder POST abhängig zu sein kann man $_REQUEST['dieNachricht'] verwenden, da $_REQUEST bei POST und GET funktioniert.


%eventuell Bildlegende zum Screenshot