Ein Formular sieht beispielsweise wie folgt aus:
1 2 3 4 5 6 7 8 |
<form action="myscript.php" method="get"> <input name="variablename" type="text" size="10" maxlength="50" value="vorbelegter Wert"> <textarea name="areaname" cols="60" rows="15" wrap="off"> Hier steht der Text, der in Zeile 1 enthalten ist. Dies ist Zeile 2 </textarea> <input type="submit" value="Abschicken"> <input type="reset" value="Löschen"> </form> |
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:
1 2 3 4 |
<?php $einzeiligesFeld = $_GET['variablenname']; $mehrzeiligesFeld = $_GET['areaname']; ?> |
oder bei einer Übermittlung über die POST
-Methode mit Hilfe von:
1 2 3 4 |
<?php $einzeiligesFeld = $_POST['variablenname']; $mehrzeiligesFeld = $_POST['areaname']; ?> |
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.