HTML form: GET, POST, action und name mit PHP prüfen
HTML <form> gruppiert Eingabesteuerelemente in ein Formular, das an einen Server übermittelt wird. action wählt die Verarbeitungsadresse und method wählt die Übertragungsmethode aus. GET legt Werte in der URL-Abfrage ab und POST legt sie im Anfragekörper ab, aber POST verschlüsselt die Daten nicht selbst.
Die Rollen von action, method und name
action ist die Adresse, die der Browser anfragt. Wenn sie weggelassen wird, sendet das Formular an die aktuelle Dokumentadresse. Die Standardmethode ist get, geeignet für Suchvorgänge und Abrufe, die den Zustand nicht ändern. Erstellung und Aktualisierung verwenden im Allgemeinen post, mit serverseitiger Authentifizierung, Autorisierung und Anforderungsüberprüfung.
Die id eines Steuerelements identifiziert es im Dokument und verknüpft sein Label; name ist der übermittelte Datenschlüssel. Gewöhnliche Eingaben ohne Name werden weggelassen, ebenso deaktivierte Steuerelemente und nicht angekreuzte Optionsfelder oder Kontrollkästchen. Verschachteln Sie kein Formular innerhalb eines anderen.
Bereiten Sie das vollständige Praxisformular vor
Um auch den empfangenden Server zu überprüfen, reicht es nicht aus, nur eine HTML-Datei zu öffnen. Erstellen Sie einen leeren Übungsordner in einer lokalen Umgebung mit installiertem PHP 8.x und speichern Sie beide untenstehenden Dateien in diesem Ordner. Dieses Beispiel zeigt empfangene Werte an; es speichert keine Daten, sendet keine E-Mails und ändert keine Konten.
Die erste Datei ist index.html. Der zweite Absende-Button verwendet formmethod, sodass dieselben Eingaben mit GET und POST verglichen werden können.
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>GET- und POST-Formulare üben</title>
</head>
<body>
<h1>Anfragemethoden vergleichen</h1>
<form action="receive.php" method="get">
<p>
<label for="query">Suchbegriff</label>
<input type="text" id="query" name="q" maxlength="80" required>
</p>
<p>
<label for="note">Notiz</label>
<textarea id="note" name="note" maxlength="300"></textarea>
</p>
<button type="submit">Mit GET prüfen</button>
<button type="submit" formmethod="post">Mit POST prüfen</button>
<button type="reset">Zurücksetzen</button>
</form>
</body>
</html>
Die zweite Datei ist receive.php. Sie liest Zeichenfolgen aus der Eingabesammlung für die Anfragemethode und lehnt Arrays oder ungültige Längen ab. Die Ausgabe wird für ihren HTML-Kontext maskiert.
<?php
declare(strict_types=1);
header('Content-Type: text/html; charset=UTF-8');
$method = $_SERVER['REQUEST_METHOD'];
if ($method !== 'GET' && $method !== 'POST') {
header('Allow: GET, POST');
http_response_code(405);
exit('Nicht unterstützte Anfragemethode.');
}
$input = $method === 'POST' ? $_POST : $_GET;
$q = $input['q'] ?? '';
$note = $input['note'] ?? '';
if (!is_string($q) || !is_string($note) || trim($q) === '' ||
strlen($q) > 320 || strlen($note) > 1200) {
http_response_code(400);
exit('Prüfen Sie Suchbegriff und Notiz als Zeichenketten.');
}
function h(string $text): string {
return htmlspecialchars($text, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
}
?>
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Empfangenes Ergebnis</title>
</head>
<body>
<h1>Empfangenes Ergebnis</h1>
<p>Anfragemethode: <?= h($method) ?></p>
<p>Suchbegriff: <?= h($q) ?></p>
<p>Notiz: <?= h($note) ?></p>
<p><a href="index.html">Zum Formular zurück</a></p>
</body>
</html>
HTML maxlength und die Längenprüfung des Servers verwenden unterschiedliche Maßeinheiten. Dieses Serverbeispiel begrenzt Bytes mit strlen; es reproduziert nicht eine vollständige Zeichenanzahl-Policy. Validieren Sie wichtige Eingaben gemäß den tatsächlichen Anwendungsregeln des Servers.
Führen Sie das Beispiel aus und vergleichen Sie GET mit POST
Führen Sie in dem Ordner, der beide Dateien enthält, diesen Befehl aus und öffnen Sie http://127.0.0.1:8000/index.html. Wenn php nicht gefunden wird, überprüfen Sie den Installationspfad und die PATH-Einstellung. Der eingebaute Server von PHP ist für lokale Entwicklung und Übung gedacht, nicht für die Produktion.
php -S 127.0.0.1:8000
- Das Abschicken mit einem leeren Suchbegriff wird durch die erforderliche Validierung blockiert.
- Geben Sie HTML als Suchbegriff und Practice als Notiz ein, und senden Sie dann mit GET. Die URL-Abfrage enthält q und note, und die Antwort zeigt GET als Methode an.
- Kehren Sie zum Formular zurück und geben Sie dieselben Werte ein, und senden Sie dann mit POST. Die Eingabewerte werden nicht an die URL angehängt, und die Antwort zeigt POST an. Mit den Entwickler-Tools kann im Netzwerk-Panel der Body angezeigt werden.
- Senden Sie
<b>Practice</b>als Notiz. Die Antwort zeigt die Tags als Text statt Fettschrift. Beenden Sie den Server danach mit Strg+C im Terminal.
Überprüfen Sie die Übermittlungsmethoden, Sicherheit und häufige Fehler
POST-Inhalte bleiben in den Entwicklerwerkzeugen und auf dem Server sichtbar; HTTPS ist notwendig, um Daten während der Übertragung zu schützen. GET-Abfragen können in Adressen, dem Verlauf oder in Logs verbleiben, daher sollten keine sensiblen Werte wie Passwörter darin verwendet werden. HTML-Prüfungen mit required und maxlength helfen den Benutzern, ersetzen jedoch keine Servervalidierung.
Datei-Upload-Formulare benötigen im Allgemeinen method="post" und enctype="multipart/form-data". Die Standardcodierung ist application/x-www-form-urlencoded. Reales Datei-Handling erfordert außerdem Prüfungen von Größe, Typ und Speicherort, über dieses Eingabe-String-Beispiel hinaus.
Bei einer 404-Antwort überprüfen Sie den relativen Aktionspfad und den Dateinamen. Bei fehlenden Werten überprüfen Sie den Namen und ob der Server die Sammlung für die richtige Anfragemethode liest. Setzen Sie type="button" explizit für gewöhnliche Aktionsschaltflächen, um versehentliches Absenden zu vermeiden. Reset stellt die ursprünglichen Standardwerte wieder her, statt Felder immer leer zu machen. Konsultieren Sie die MDN Formularreferenz und das PHP Formular-Tutorial.




