GET 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.
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.
Hallo Thomas,
vielen Dank für die weiterführenden Informationen.
Ich werde mir die Links anschauen