Daten abfangen und weiterverarbeiten

Erste Schritte: Daten abfangen und weiterverarbeiten mit $_GET & $_POST

Wenn du ein HTML-Formular abschickst oder manuell Parameter in die URL hängst, kannst du in PHP die übermittelten Daten mithilfe von $_GET und $_POST abfangen und verarbeiten. Damit realisierst du Benutzerinteraktionen wie Logins, Registrierungen, Suchanfragen, Kommentare und vieles mehr. In diesem Tutorial erfährst du, wie das funktioniert und worauf du achten solltest.

1. Unterschied zwischen GET und POST

  • GET: Die Daten werden im Query-String der URL mitgeschickt, z. B. ?username=Lisa. Diese Methode ist sichtbar im Browser und eignet sich für alles, was ohne Sicherheitsrisiken in der URL stehen darf (z. B. Filter, Paginierung). Sie hat eine Beschränkung in der Länge (je nach Browser/Server).
  • POST: Die Daten liegen im HTTP-Body und werden nicht in der URL angezeigt. Ideal für Formulare, die sensible Daten enthalten (z. B. Passwörter) oder größere Datenmengen. POST ist meist „sicherer“ und unauffälliger, was die URL betrifft.

2. HTML-Formular-Beispiel

Im einfachsten Fall baust du ein Formular mit dem gewünschten method (GET oder POST) und einer action, die auf eine PHP-Datei verweist:

<form action="verarbeiten.php" method="POST">
    <label>Benutzername:</label>
    <input type="text" name="username">

    <label>Passwort:</label>
    <input type="password" name="pass">

    <button type="submit">Einloggen</button>
</form>

Hier werden beim Klick auf „Einloggen“ die Felder username und pass an verarbeiten.php geschickt, und zwar per POST.

3. Daten in der Ziel-Datei abfragen

In verarbeiten.php kannst du dann so auf die Formulardaten zugreifen:

<?php
// Da im Formular method="POST" gesetzt ist:
$username = $_POST['username'];
$passwort = $_POST['pass'];

// Daten weiterverarbeiten
echo "Hallo, " . htmlspecialchars($username) . "!<br>";
echo "Dein Passwort ist: " . htmlspecialchars($passwort);
?>
  • $_POST[‚username‘] enthält den Wert aus dem Feld name=“username“.
  • $_POST ist ein assoziatives Array, in dem alle POST-Felder liegen. Bei GET wäre es $_GET.
  • htmlspecialchars() ist ein simpler XSS-Schutz, indem es Sonderzeichen in HTML-Entities umwandelt.

4. GET-Beispiel

Nutze GET, wenn du z. B. ein Suchfeld anbieten willst, dessen Ergebnisse man bookmarken oder teilen kann. Das Formular würde dann so aussehen:

<form action="suche.php" method="GET">
    <label>Suche:</label>
    <input type="text" name="q">

    <button type="submit">Suchen</button>
</form>

In der Ziel-Datei suche.php kannst du dann $_GET[‚q‘] auslesen:

<?php
$suchbegriff = $_GET['q'] ?? '';
echo "Du suchst nach: " . htmlspecialchars($suchbegriff);
?>

Das ?? “ (Null-Coalescing Operator) stellt sicher, dass du einen leeren String bekommst, wenn $_GET[‚q‘] nicht existiert.

5. Manuelle Parameter in der URL

Auch ohne Formular kannst du GET-Parameter manuell in die URL einfügen, z. B. http://example.com/suche.php?q=Apfel. Dein PHP-Code sieht dann genauso aus:

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

Das ist hilfreich für Filter, Pagination (?page=2), Tag-Auswahl usw.

6. Sicherheit und Validierung

  • Alle Eingaben prüfen: Egal ob POST oder GET, die Daten kommen vom Benutzer. Validierung und Filtern sind Pflicht, bevor du sie weiter verarbeitest.
  • XSS-Schutz: Bei der Ausgabe von Benutzereingaben htmlspecialchars() nutzen.
  • SQL-Injection-Schutz: Bei DB-Abfragen Prepared Statements (PDO) oder mysqli real_escape_string etc. (Besser PDO prepare!).
  • Method override: Achte darauf, dass man in HTML-Formularen standardmäßig nur GET/POST verwenden kann. PUT/DELETE etc. geht per Trick, aber normaler HTML-Support ist GET/POST.

7. Dateiupload (POST multipart/form-data)

Nur eine Randnotiz: Für Datei-Uploads brauchst du method=“POST“ und enctype=“multipart/form-data“. So gelangen auch Binärdaten (Bilder, PDFs) an deinen PHP-Code. Dann kannst du via $_FILES auf die hochgeladenen Daten zugreifen.

Fazit

Mit $_GET und $_POST kannst du in PHP alle an dein Script gesendeten Formulardaten oder Query-Parameter abfangen und verarbeiten. Die Wahl zwischen GET und POST hängt von deinen Anforderungen ab: GET für sichtbare und teilebare Parameter, POST für sensible oder größere Daten. In jedem Fall ist es wichtig, die Eingaben zu validieren und sicher weiterzuverarbeiten. Mit diesem Wissen lässt sich jede Art von User-Interaktion in Web-Anwendungen umsetzen – von der einfachen Suchleiste bis zu komplexen Bestell- und Registrierungsformularen.