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.