MB Dev .tech
Registrieren Login

Forms · GET vs POST

← Zurück zu Forms, Requests & State

Wenn du ein Formular abschickst, sendet der Browser einen HTTP Request an den Server. Die zwei wichtigsten Methoden dafür sind GET und POST. Beide können Daten übertragen – aber sie sind für unterschiedliche Zwecke gedacht.

Merke
GET = Daten stehen in der URL · POST = Daten stehen im Request-Body

GET eignet sich besonders für Abfragen (z.B. Suche). POST ist typisch für Änderungen (z.B. Registrierung, Speichern).

1) GET – ideal für Suchen und Filter

Bei GET hängt der Browser die Daten an die URL an. Das nennt man Query-String. Beispiel: ?q=schuhe

Tipp
GET ist „teilbar“

Weil die Daten in der URL stehen, kann man Links teilen oder als Lesezeichen speichern. Darum sind Suchseiten fast immer GET.

Beispiel: GET-URL

/projects/learn/forms/get_post.php?q=kaffee

2) Mini-Demo: GET-Formular (Suche)

Das hier ist ein typisches Suchformular: Beim Absenden landet der Suchbegriff in der URL und ist danach im Array $_GET.

Was ist nach dem Absenden passiert?

  • Die Seite wurde neu geladen (neuer Request).
  • Der Browser hat ?q=... an die URL gehängt.
  • PHP kann den Wert über $_GET['q'] lesen.
Beispielcode: $_GET

$q = $_GET['q'] ?? '';

if ($q !== '') {
    echo "Du suchst nach: " . $q;
}

Noch kein GET-Wert vorhanden. Tippe etwas ein und klicke „Suchen (GET)“.

3) POST – ideal für Speichern, Login, Änderungen

Bei POST sendet der Browser die Daten nicht in der URL, sondern im sogenannten Request-Body. Deshalb sieht man die Werte nicht direkt in der Adresszeile.

Merke
POST ist Standard, wenn etwas „verändert“ wird

Beispiele: Registrierung, Login, Speichern, „Kaufen“, „Kommentar posten“. Du möchtest dafür keinen Link, der die Aktion wiederholt.

Achtung
POST ist nicht automatisch „sicher“

POST versteckt Daten nur vor der URL – aber sie sind trotzdem übertragene Benutzereingaben. Du musst Eingaben immer validieren und beim Ausgeben escapen.

4) Mini-Demo: POST-Formular (Speichern)

Dieses Formular sendet den Namen per POST. PHP liest das über $_POST. Die Seite bleibt dieselbe – es wird nur ein neuer Request gemacht.

Beispielcode: $_POST

$name = $_POST['name'] ?? '';

if ($name !== '') {
    echo "Gesendet wurde: " . $name;
}

Noch kein POST-Wert vorhanden. Tippe etwas ein und klicke „Absenden (POST)“.

5) Wann nutze ich was?

  • GET für Suche/Filter/Ansicht: „Zeig mir Daten“
  • POST für Aktionen/Änderungen: „Speichere/ändere Daten“
Tipp
Faustregel als Frage

Kann ich das Ergebnis als Link teilen (Suche/Filter)? → eher GET.
Würde ein „Neuladen“ die Aktion gefährlich wiederholen (Speichern/Kaufen)? → eher POST.

Mini-Hinweis: Warum heißt das „Request“?

Ein Request ist eine Anfrage an den Server. Jede Seite, jedes Formular, jedes Neuladen – das ist ein Request. Genau darum ist GET/POST so wichtig: es beschreibt, wie deine Anfrage Daten überträgt.

Nächster Schritt
Validierung Basics

Jetzt, wo du Daten annehmen kannst, musst du lernen: Welche Eingaben sind erlaubt – und wie prüfe ich das sauber?