GET- und POST-Formulare

Ein Formular sieht beispielsweise wie folgt aus:

Innerhalb des Listings ist zu sehen, dass ein Attribut namens method angegeben ist. Dieses Attribut kann entweder auf GET oder auf POST gesetzt werden. Der Unterschied liegt darin, wie die Daten zum Server übertragen werden. Mit der GET-Methode wird ein String generiert, welcher der URL angehängt wird. Somit wird eine lange URL gesendet, in welcher alle Daten untergebracht werden. PHP sorgt dann selbständig dafür, die Daten aus der URL zu extrahieren. Allerdings ist diese Methode für große Datenmengen nicht geeignet, da die Länge der URL begrenzt ist. Mit der POST-Methode werden die Daten innerhalb der Nutzdaten des Requests transportiert. Hier sind auch große Dateien kein Problem. Noch ein anderer Unterschied existiert zwischen den beiden Methoden: Da bei der GET-Methode eine normale URL generiert wird, wird diese in allen Serverprotokollen sowie auch in der Browserhistorie gespeichert. Eventuell kann es sogar sein, dass der Browser diese URL an eine Fremdseite versendet. Ein GET-Aufruf eignet sich somit weniger für sensible Daten, es sei denn, dass entsprechende Schutzmaßnahmen getroffen werden.

Nachdem die Variablen nun so auf den Server transportiert worden sind, können sie mit dem aufgerufenen Skript myscript.php ausgelesen werden:

Bei einer Übermittlung über die GET-Methode mit Hilfe von:

oder bei einer Übermittlung über die POST-Methode mit Hilfe von:

Sowohl das Array $_GET wie auch $_POST gehören zu den superglobalen PHP-Variablen. Dies bedeutet, dass sie überall verfügbar sind und nicht speziell über global noch inkludiert werden müssen.

Von HTTP-Seite ist es kein Problem, dass ein Feldname ein Punkt beinhaltet. Auf PHP-Seite wird jedoch dieser Punkt im Feldnamen in einen Unterstrich (_) übersetzt. Aus person.name wird so person_name.

Die Variablen können an PHP auch in einer Array-Notation übergeben werden. Dem Variablennamen werden dabei eckige Klammern angehängt: []. Normalerweise ist es so, dass bei gleichen Variablennamen die Variableninhalte überschrieben werden. Das bedeutet, ein Variablenname darf nur einmalig verwendet werden, damit keine Informationen verloren gehen. Mit Hilfe der Arraynotation wird jedoch als Variable ein Array angelegt. Ein und derselbe Arrayname darf auch mehrmals verwendet werden. Die weiteren Elemente werden einfach dem Array angehängt.

Statt auf $_GET und $_POST zuzugreifen, kann auch auf $_REQUEST zugegriffen werden. Dieses Array vereinigt alle Informationen aus $_GET, $_POST und $_COOKIE. Die superglobale Variable $_COOKIE wird in dem Abschnitt über Cookies vorgestellt werden. Eine Nutzung dieses zusammengefassten superglobalen Arrays wird jedoch nicht empfohlen.

Schreibe einen Kommentar

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