Formulare: Verwendung von POST und GET
Häufig wurde schon die Frage gestellt: Was ist eigentlich der Unterschied zwischen der POST- und GET-Methode
und in welcher Situation verwendet man welche Variante?
Dies möchte ich an einem einfachen Formular erläutern:
<input type="text" name="Nachname" value="" />
<input type="text" name="Vorname" value="" />
<input type="submit" value="Senden" />
</form>
oder:
<input type="text" name="Nachname" value="" />
<input type="text" name="Vorname" value="" />
<input type="submit" value="Senden" />
</form>
In der GET-Variante werden die Eingaben nach dem Senden der Webadresse (URL) als Parameter angefügt.
Wenn man z.B. als Nachname: "Mustermann" und als Vorname: "Max" eingegeben hat, sieht die URL nach dem Senden wie folgt aus:
http://www.beispiel.de/action.php?Nachname=Mustermann&Vorname=Max
Die Länge der URL ist browserspezifisch limitiert, d.h. bei längeren Eingaben, vielen Parametern etc. könnte man an die Grenze stoßen. In älteren Browsern liegt die Grenze bei ca. 2000 Zeichen.
In der POST-Variante werden die Inhalte nicht in der URL, sondern verdeckt weitergegeben, d.h. die URL sieht nach dem Senden wie folgt aus:
http://www.beispiel.de/action.php
Dies erweckt den Eindruck von Sicherheit, was aber falsch ist.
Man kann übergebene POST-Variablen genauso manipulieren, wie GET-Variablen.
Für beide Varianten gilt, dass die Variablen auf jeden Fall im empfangenden Script auf Konsistenz und Sinnhaltigkeit zu überprüfen sind. Man sollte im empfangenden Script auch nur jeweils die Variante verarbeiten, die man erwartet, d.h. wenn die Variablen mit POST gesendet werden, so wertet man auch nur die POST-Variablen aus.
In Formularen, in denen üblicherweise Eingaben anschließend aktiv verarbeitet werden, ist die POST-Variante zu bevorzugen.
Aber wozu dann GET?
Die GET-Variante eignet sich vornehmlich zur Navigation und für den lesenden Zugriff, d.h. für Seiteninhalte, die auf Basis einer übergebenen ID-Nummer oder wenigen Parametern, dynamisch aufgebaut werden. Sie wird meist in Verlinkungen verwendet und hat den Vorteil, dass diese Verlinkungen mit den GET-Parametern zusammen formularunabhängig weitergegeben oder als Lesezeichen abgespeichert werden können.