SELFPHP

SELFPHP-Druckversion
Original Adresse dieser Seite:
http://www.selfphp.de/praxisbuch/praxisbuchseite.php?site=183&group=32
© 2001-2017 E-Mail SELFPHP OHG, info@selfphp.de
© 2005-2017 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de


GET und POST


Die sinnvollste Methode für die jeweilige Webanwendung einzusetzen, liegt in den Händen des Entwicklers, daher sollten einige Hintergrundinformationen zu den beiden Übertragungsmethoden vorhanden sein.


POST

Die POST-Methode wird vorwiegend eingesetzt, um dem Server mitzuteilen, dass eine Anforderung des Clients weitere Daten enthält. POST bietet in diesem Zusammenhang folgende Funktionen an:

Die aktuell durch POST ausgelöste Aktion wird durch den Server festgelegt und ist abhängig von der Request-URI. Der gesendete Datenblock stellt hierbei einen Bestandteil dieser URI dar, ähnlich wie eine Datei Bestandteil eines Verzeichnisses ist. Der durch POST ausgelöste Prozess muss nicht direkt an eine Ressource gerichtet sein, die durch die URI adressiert wird. In diesem Fall wird entweder 200 (OK) oder 204 (No Content) als Statusmeldung übertragen. Um an dieser Stelle die Theorie auf den Punkt zu bringen: Praktisch gesehen dient POST dazu, Formulardaten vom Browser zum Server zu übertragen.


GET

Die GET-Methode ist in der Lage, Informationen jeglicher Art mithilfe der Ergebnis-URI zu identifizieren. Wenn die URI auf einem Prozess basiert, welcher Daten zurückgibt, besteht dieser aus den erzeugten Daten. Die vollständige URI besteht aus der URL, einem Fragezeichen als Trennzeichen und den Daten.

Beispiel

www.meinedomain.de/ausgabe.php?inhalt=Hallo Besucher

Es ist ebenfalls möglich, eine GET-Anforderung mit Bedingungen zu senden, beispielsweise If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match, If-Range. In diesen Fällen werden die Daten nur dann übertragen, wenn die Bedingungen erfüllt sind.


Unterschiede und Gemeinsamkeiten von GET und POST

Die vorliegenden Ausführungen haben sicher einige Unterschiede deutlich gemacht. Für den Einsatz in PHP-basierten Webanwendungen ist lediglich eines von Interesse:

Mit POST umgehen Sie die Beschränkungen von Seiten der Browser. Als einziger Nachteil könnte in Performance-ortientierten Systemen der größere Zeitaufwand zur Übertragung der Nachricht angesehen werden. Dieser Nachteil kommt dadurch zustande, dass der Server zusätzlich zum Kopf auch den gesamten Körper der Nachricht übertragen muss.


GET oder POST?

Hier einige handfeste Tipps für die Entscheidung, welche Übertragungsmethode Sie einsetzen sollten.

Allgemein betrachtet ist es besser, die Methode GET zu verwenden: Formulare sind wesentlich leichter zu debuggen und der Anwender kann sich ein fertig ausgefülltes Formular mit Parametern in die Bookmarks oder einen Hyperlink legen – das ist besonders bequem und ergonomisch.

Enthält das Formular Werte, die nicht in der URL angezeigt werden sollen, die auch nicht Bestandteil des Referers sein und nicht in Proxy-Logs auftauchen sollen, dann ist die Verwendung von POST anzuraten. Dies ist zum Beispiel immer dann der Fall, wenn ein Eingabeelement Password verwendet wird.

Ebenfalls sollte POST verwendet werden, wenn die Länge von Eingabeelementen nicht nach oben begrenzt ist, also immer dann, wenn eine TEXTAREA verwendet wird.

Schließlich ist die Verwendung von POST zwingend notwendig, wenn ein File-Upload durchgeführt werden soll, einmal wegen der prinzipiell unbegrenzten Länge, aber auch weil das notwendige Attribut ENCTYPE="multipart/form-data" nur in Verbindung mit POST funktioniert.