Webentwicklung mal ganz einfach!
← Zurück zur Übersicht

GET und POST: Unterschiede und Anwendungen

Publiziert am von Markus Hauser

In PHP können Variablen von einer Seite zu einer anderen übertragen werden. Für diesen Anwendungsfall gibt es zwei Methoden, die sich in der Art der Übertragung an die nächste Seite unterscheiden. Die beiden Methoden sind GET und POST.

  • GET: Überträgt die Variablen in Adresszeile (URL), limitierte Anzahl / Länge an Variablen.
  • POST: Überträgt die Variablen für den Client unsichtbar im Hintergrund, unlimitierte Anzahl / Länge an Variablen.

Beide Methoden haben natürlich Vor- und Nachteile. Diese möchte ich euch näher bringen, samt Beispiele für übliche Verwendungen.

Die GET Methode

Die Variablen und deren Werte werden über die Adresszeile übergeben. Diese sind für den Client offen ersichtlich, ähnlich dieser Adresszeile.

Hier wurde an die test.php die Variable vorname mit dem Wert 'Foo' und die Variable nachname mit dem Wert 'Bar' übergeben. Diese Werte kann man in PHP mit dem vordefinierten Array $_GET ansprechen.

<?php
echo $_GET['vorname']; // Ausgabe: Foo
echo $_GET['nachname']; // Ausgabe: Bar

GET Parameter können auch ganz komfortabel über einen herkömmlichen HTML-Link erstellt werden. Nach dem Dateinamen des Links folgt ein Fragezeichen (?), gefolgt von dem ersten Variablennamen, einem Gleichheitszeichen (=) und dem Wert für die erste Variable. Alle weiteren Variablen werden mit einem &-Zeichen, gefolgt von Variablenname, Gleichheitszeichen und Wert angehängt. Zur Verdeutlichung hier ein Beispiel.

<a href="index.php?page=start&vorschau=1">Klick mich</a>

Anmerkung: Korrekterweise müsste das & Zeichen als &amp; kodiert werden.
Die Anzahl an Variablen ist an sich nicht begrenzt, jedoch kann es sein, dass der Server oder auch der Browser des Clients die länge begrenzt. Als kleine Richtlinie kann man sagen, dass 2.000 Zeichen nicht überschritten werden sollen, wenngleich ich bei so vielen Variablen bzw. so großen Werten längst die POST Methode empfehle.

Auf einem Blick: Vor- und Nachteile von GET

  • + Einfach Übergabe der Variablen in Links.
  • + Client kann die Webseite inklusive Variablen den Favoriten hinzufügen.
  • + / - Client sieht die Parameter in der Adresszeile und kann diese auf einfach Weise ändern.
  • - Durch Adresslänge begrenzte Anzahl an Variablen bzw. Länge der Werte.
  • - Übertragung von Dateien nicht möglich.

Die POST Methode

Die Variablen und deren Werte werden unsichtbar im Hintergrund übertragen. Ein herkömmlicher Benutzer sieht die Variablen nicht, allerdings können auch diese vom Endanwender manipuliert werden (ähnlich des Änderns von GET Variablen in der Adresszeile). Häufige Anwendungsfälle für die Übergabe von POST Variablen sind Formulare. Im öffnenden <form>-Tag wird die Methode angegeben (GET oder POST). Das "name" Attribut bei den Formularfeldern gibt den Variablenname an, mit welchem wir später auf die Variable wieder zugreifen können.

<form action="senden.php" method="POST">
    <input type="text" name="vorname" />
    <input type="text" name="nachname" />
    <input type="submit" value="Senden" />
</form>

In diesem Beispiel werden an die Datei senden.php zwei Variablen per POST übergeben: vorname und nachname. Auf den Inhalt der im Formular eingetragen wurde können wir in PHP über das vordefinierte Array $_POST zugreifen.

<?php
echo $_POST['vorname'];
echo $_POST['nachname'];

Die Anzahl an Variablen, bzw. die Länge der Werte dieser, ist grundsätzlich nicht begrenzt. In PHP existiert allerdings eine Einstellung in der Datei php.ini, welche sich post_max_size nennt. Der derzeitige Standard dieser Einstellung liegt bei 8 MiB, was mehr als 8 Millionen Zeichen entspricht. Ein weiterer großer Vorteil der POST Methode ist die möglichkeit von Dateiuploads. Wie genau diese mit PHP zu realisieren sind, werde ich in einem anderen Beitrag erklären.

Auf einem Blick: Vor- und Nachteile von POST

  • + Fast unbegrenzte Anzahl von Variablen und Wertlängen.
  • + Übertragung von Dateien in einem Formular möglich.
  • + / - Client sieht die Parameter nicht.
  • - Seite mit übergebenen POST Werten kann nicht zu den Favoriten hinzugefügt werden.
  • - Verwendungsmöglichkeit beschränkt sich auf Formulare.

Wie entscheide ich mich?

Die Qual der Wahl hat man jetzt nach wie vor. Ich möchte euch aber einige Standardbeispiele zeigen, mit welchen man leichter die beste Methode finden kann.

  • Menülink mit Übergabe einer / weniger Variablen: GET Der Link ist üblicherweise ein <a>-Tag. Angehängte Variablen im href-Attribut werden automatisch per GET mitgeschickt.
  • Suchformular mit wenigen Feldern: GET Man kann eine Suche zu den Favoriten hinzufügen und auch den Link mit den Ergebnissen Freunden schicken, ohne dass diese das Suchformular erneut absenden müssen.
  • Kontaktformular: POST Ein Anfragetext kann unter Umständen etwas länger werden, deshalb ist es besser POST zu verwenden.
  • Dateiuploadformular: POST Eine Datei (z.B. ein Bild) hat schnell mehr als nur ein paar KiB, weshalb hier unbedingt POST verwendet werden sollte.

Markus

← Zurück zur Übersicht
Eingeordnet in: HTML / CSS PHP / MySQL
Lesezeichen: Permalink zum Beitrag

Kommentare (5)

Markus

Der Foobar Blog,
ist Marke Eigenbau ;)

Riggleman

Ich finde das Design toll.
Schoen aufgeraeumt. Woher bekommt man das ?

Markus

Vielen Dank für deinen Hinweis,
werden wir möglichst bald integrieren. Ist auf jeden Fall eine sinnvolle Erweiterung!

wodi79

Lieber Markus!
Es wäre echt super wenn du bei den einzelnen Blogposts auch die Möglichkeit zum liken und sharen auf twitter bieten würdest. Generell find ich den Blog super interessant und du hast auf jeden fall eine sehr begeisterte Leserin :-)

Farid

Hallo,
ich bin mal so frech und poste mal was im Blog. Sieht toll aus! Ich beschaeftige mich auch seit kurzem mit WordPress steige aber noch nicht durch alle Funktionen durch. Dein Blog ist mir da immer eine willkommene Anregung. Weiter so!

← Zurück zur Übersicht