HTML Formulare in PHP auswerten mit $_POST und $_GET
In diesem PHP Tutorial lernen wir, wie wir die PHP Variablen $_POST und $_GET verwenden, um Formardaten weiterverarbeiten zu können.Tags: Arrays | Formulare | Inputs | PHP lernen | Programmieren lernen | Variablen | Web-Development lernen | Webseiten erstellen lernenWorum geht´s?
In diesem PHP Tutorial werden wir lernen, wie wir mit Hilfe der vorgefertigten PHP Variablen $_POST und $_GET die in ein HTML Formular eingegebenen Daten auslesen und weiterverarbeiten können.
Legen wir dafür erst mal ein einfaches HTML Formular an:
1. Ein einfaches Login-Formular in HTML anlegen
<form> <input type="email"> <input type="password"> <input type="submit" value="Login"> </form>
Dieses beinhaltet 3 Dinge:
- ein Email-Feld
- ein Passwort-Feld
- einen Submit-Button, um das Formular abzuschicken
Würden wir dieses Formular abschicken, wird jedoch noch nichts übertragen.
1.1 Den Datensätzen im HTML Formular Namen zuordnen
Das liegt daran, dass keines der einzelnen Felder einen Namen hat. Fügen wir diesen nun hinzu:
<form> <input type="email" name="myEmail"> <input type="password" name="myPW"> <input type="submit" value="Login"> </form>
Der Submit-Button braucht dabei keinen Namen, weil er ja nur dazu dient, die anderen Daten abzuschicken.
Wenn wir unser Formular nun mit Daten befüllen und abschicken, so sehen wir oben in der Adresszeile etwas in dieser Art (der Teil vor dem ?-Zeichen wird bei dir vermutlich anders sein):
http://relativemeister.com/phptuts/test.php?myEmail=test%40test.at&myPW=abcdefgh
Die Daten, die wir eingegeben haben, werden nun basierend auf den Namen, die wir den jeweiligen inputs gegeben haben, im Link mitgeschickt:
- myEmail=test%40test.at
- myPW=abcdefgh
Das %40 steht dabei für das @-Zeichen. Das ?-Symbol bedeutet, dass ab hier nun mitgegebene Daten kommen, und das &-Zeichen steht dafür, dass noch ein Datensatz angehängt wird. Würden wir 3 Daten im Formular abschicken, würde vor dem 3. Datensatz wieder ein &-Zeichen stehen.
1.2 Die Daten unseres HTML-Formulars an ein anderes Ziel oder mit POST statt GET schicken
Wollen wir, dass die eingegebenen Daten nicht auf die gleiche Unterseite geschickt wird, auf der wir uns schon befinden, müssen wir das im <form>-Tag entsprechend festlegen.
Das Gleiche gilt für den Fall, falls wir die Daten nicht an die URL dranhängen wollen, sondern „heimlich“ mitschicken wollen:
<form action="test.php" method="POST"> <input type="email" name="myEmail"> <input type="password" name="myPW"> <input type="submit" value="Login"> </form>
2. Die Formular-Daten mit PHP auslesen
Je nachdem, ob die Formular-Daten unseres HTML Formulars mit der Methode GET oder POST verschickt wurden, kommen sie in unserem PHP-Skript in einer anderen Variable an:
- $_GET
- $_POST
Beide Variablen sind Arrays, das heißt eine Art Liste an mehreren Variablen in einer. $_GET und $_POST sind vorgefertigte Variablen in PHP, die du einfach benutzen kannst.
Nehmen wir mal an, die Datensätze unseres HTML Formulars wurden über die GET-Methode geschickt.
Dann können wir diese so auslesen und in seperate Variablen speichern:
$email = $_GET['myEmail']; $pw = $_GET['myPW'];
Was aber, wenn der Benutzer noch keine Daten über das HTML Formular abgeschickt hat, wenn er zum ersten Mal auf diese Seite kommt?
Dann bekommen wir möglicherweise Warnungen angezeigt, weil der Array $_GET an den bezeichneten Stellen leer ist.
2.1 Mit PHP überprüfen, ob im HTML Formular überhaupt etwas gesendet wurde
Um das zu verhindern, können wir überprüfen, ob überhaupt etwas an der Stelle zu finden ist:
if (isset($_GET['myEmail'])) $email = $_GET['myEmail']; else $email = -1; if (isset($_GET['myPW'])) $pw = $_GET['myPW']; else $pw = -1;
Die Funktion isset() überprüft, ob die Variable einen Wert hat, und gibt als Ergebnis true oder false zurück.
Wenn du im ELSE-Block die Variable z.B. auf -1 setzt, kannst du dann später überprüfen, ob der Wert vom Benutzer gesetzt wurde oder nicht:
if ($email !== -1 && $pw !== -1) { "USER SETZTE!"; } else { "Nicht vom User gesetzt"; }
Die !== mit dem doppelten =-Zeichen überprüfen dabei nicht nur den Wert der Variable, sondern auch, ob der Datentyp zusammenpasst – also in diesem Fall ob die Variable auch wirklich eine Zahl ist.
2.2 Mit PHP die $_POST Variable auslesen
Wurde das Formular nicht mit der GET-Methode abgeschickt sondern mit der POST-Methode, funktioniert das Ganze fast genau gleich. Du schreibst nur statt $_GET eben $_POST:
if (isset($_POST['myEmail'])) $email = $_POST['myEmail']; else $email = -1; if (isset($_POST['myPW'])) $pw = $_POST['myPW']; else $pw = -1; if ($email !== -1 && $pw !== -1) { "USER SETZTE!"; } else { "Nicht vom User gesetzt"; }
Sobald du die Variablen aus den Arrays $_POST und $_GET ausgelesen und in leichter merkbare Variablen „umgespeichert“ hast, kannst du mit diesen arbeiten wie mit normalen PHP Variablen.
Du kannst mit ihnen rechnen, du kannst sie ausgeben, sie als Parameter in Funktionen verwenden, usw.
Viel Freude noch damit! 🙂