GET vs. POST vs. REQUEST

StartWild gebloggtWebentwicklungGET vs. POST vs. REQUEST

Die Quelltexte anderer Entwickler sind grundsätzlich immer spannendes, neues Material.
Denn unabhängig davon, ob der betrachtete Quelltext gut oder schlecht ist, in beiden Fällen kann man seine eigene Codequalität steigern.
So stößt man entweder auf völlig neue Methoden, Probleme zu lösen, oder man sieht, wie man etwas nicht machen sollte.

In einem aktuellen Projekt, bei dem eine bestehende Applikation erweitert wird, ist letzteres der Fall. Der letzte Entwickler hat wohl noch nicht ganz die Unterschiede zwischen $_POST, $_GET und $_REQUEST erkannt, was aber scheinbar öfters vorkommt.
Aus diesem Grund gibt es nun an dieser Stelle eine ziemlich kurze Erklärung.

$_POST
Gerade wenn Passwörter bei einem Formular übertragen werden (bzw. allgemein bei der Verarbeitung von Formularen), sollte man auf $_POST setzen. Einfach ausgedrückt werden die $_POST Daten im Gegensatz zu $_GET NICHT über die URL übermittelt, spricht an der Adresse in der Statusleiste ändert sich nichts. Das ist wie gesagt vor allem bei Passwörtern praktisch, denn neugierige Kollegen lauern an allen Orten.

Vorsicht: Viele Entwickler sind der Meinung, dass man $_POST Variablen nicht überprüfen muss, nur weil man die Daten nicht in der URL „sieht“. Aber Dank Firefox Erweiterung wie der Web Developer Toolbar, ist es für einen halbwegs begabten Webentwickler gar kein Problem, $_POST Variablen zu manipulieren.

$_GET
Immer wenn ein Parameter von „außen“, also über die URL, manipuliert werden soll, bietet sich der Einsatz von $_GET an.
Ein Beispiel hierfür wäre der Inhalt einer Website, der je nach URL variiert und über eine ID aufgerufen wird.

$_REQUEST
Meiner Meinung nach sollte man, sofern möglich, auf $_REQUEST verzichten, denn $_REQUEST übernimmt alle Inhalte aus Cookie, POST und GET Variablen. D.h. hier besteht die Möglichkeit, eine Variable zu überschreiben, sollte man für GET bzw. POST denselben Namen benutzen. Hier besteht vor allem die Gefahr, dass ein User Code „einschmuggeln“ kann und so die Sicherheit der Anwendung gefährdet.

Wer also eine halbwegs sichere Webanwendung entwickeln möchte, sollte auf $_REQUEST verzichten und gezielt mit Hilfe von $_GET oder $_POST auf die entsprechenden Inhalte zugreifen.

3 thoughts on “GET vs. POST vs. REQUEST

  1. Sorry aber du bist ein ganzes Stück entfernt, aber ging mir auch so als ich noch PHP programmiert hab. Man muss das ganze unabhängig von PHP sehen.

    Im HTTP Standard nicht nur GET und POST sondern auch noch PUT und DELETE und ein mehr definiert. Die Namen sagen eigentlich schon was damit bezweckt werden soll und mit REST bzw. RESTful kommt es zumindest bei Rails sehr in Mode.

  2. Hallo Alexander,

    nur zur Ergänzung deines Artikels. Wenn man einem POST Parameter den gleichen Namen verpasst wie einem GET Parameter wird in PHP der GET- durch den POST-Wert überschrieben. Komische Logik, ich denke da sollte der Parser mit ner Fehlermeldung aussteigen aber PHP ist da ja nich so kleinlich 😉

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.