Programmieren mit PHP, Teil 8 Verarbeiten von HTML-Formularen mit PHP

Autor / Redakteur: Thomas Joos / Stephan Augsten

PHP ist in der Lage Formulare zu verarbeiten, die zum Beispiel auf Basis von HTML erstellt wurden. Die Daten werden an ein PHP-Skript übergeben, das die Informationen dann entsprechend verarbeiten kann.

Anbieter zum Thema

Mit PHP lassen sich Webformulare, die beispielsweise in HTML erstellt wurden, ohne Probleme auslesen.
Mit PHP lassen sich Webformulare, die beispielsweise in HTML erstellt wurden, ohne Probleme auslesen.
(Bild gemeinfrei: kreatikar - Pixabay.com / Pixabay )

Werden Daten in einem Web-Formular von Anwendern eingegeben, lassen sich diese Daten speichern und in einem PHP-Skript weiterverwenden, welches die Daten des Formulars einliest und weiterverarbeitet. Formulare lassen sich zum Beispiel mit HTML erstellen, also insbesondere die Eingabefelder inklusive ihrer Beschriftung.

Mit PHP ist es dann möglich, auf die Daten des Formulars zuzugreifen. Im Formular muss allerdings eine Möglichkeit bestehen, die Daten zu übertragen – also einfach ausgedrückt, die eingegebenen Daten im Formular zu speichern.

PHP mit einem Formular verbinden

Damit PHP die Daten eines HTML-Formulars auslesen kann, wird im Formular-Code selbst ein Skript hinterlegt, das ausgeführt wird, wenn Anwender nach dem Ausfüllen eines Formulars die Daten übertragen (submit). Ein Beispielskript sieht folgendermaßen aus:

<form action="formular.php" method="get">
   Sendung: <input type="text" name="Name" value="">
   <input type="submit"></form>

Während es sich bei dem Formular um ein HTML-Skript handeln kann, muss das PHP-Skript, das die Daten ausliest, entsprechend als PHP-Skript gekennzeichnet werden kann.

Mit PHP auf Daten in Formularen zugreifen

PHP bietet mit dem Array „$_GET“ die Möglichkeit, Daten von einem HTML-Formular einzulesen. Die Ausgabe lässt sich auch recht einfach testen, indem Daten aus einem HTML-Formular mit „print_r ($_GET) ;“ ausgegeben werden. Damit das funktioniert, muss im Formular festgelegt werden, dass die Formular-Methode „get“ genutzt wird.

Um einzelne Daten auszulesen, werden die im Formular festgelegten Variablen, beziehungsweise die Daten der Felder eingelesen. Gibt es im Formular zum Beispiel das Feld „Vorname“, kann auf diese Daten zugegriffen werden. Dazu wird zum Beispiel der folgende Befehl verwendet, um die eingegebenen Daten des Feldes „Vorname“ auszugeben:

echo htmlspecialchars $_Get ["Vorname"];

Mit „htmlspecialchars“ wird sichergestellt, dass nur Daten aus Formularen übernommen werden, die nicht gefährlich sind. Ohne diesen Befehl könnten Anwender HTML-Code in den Feldern eintragen, der durch die Ausführung des PHP-Skriptes dann auch ausgeführt wird. Das stellt natürlich ein Sicherheitsrisiko dar. Generell würde die Ausgabe aber auch nur mit dem folgenden Befehl funktionieren:

echo $_Get ["Vorname"];

Aus Sicherheitsgründen sollten daher alle Daten, die aus HTML-Formularen stammen, nur mit „htmlspecialchars“ behandelt werden. Im Formular selbst wurde das Feld mit folgender Syntax erstellt:

<label for="vorname">Vorname</label>

Formular-Erstellung und Verarbeitung in einem gemeinsamen Skript

Natürlich besteht auch die Möglichkeit, das Formular und das dazugehörige PHP-Skript in einem gemeinsamen Skript unterzubringen. In diesem Fall muss das Skript die Endung PHP erhalten. Bei der Aufteilung des HTML-Formulars und des PHP-Skriptes wird das Formular als HTML-Datei gespeichert, das zu verarbeitende Skript als PHP-Datei.

Bei der Verwendung einer gemeinsamen Datei zur Erstellung eines Formulars und eines PHP-Skriptes, kann die Verarbeitung der Felder im Formular direkt nach der Zeile „</form>“, also dem Ende des Formulars eingefügt werden. Dazu werden die gleichen Befehle genutzt, wie in diesem Beitrag bereits gezeigt.

Dazu beginnt die Verarbeitung direkt nach der Zeile „</form>“ mit „<?PHP“. Zusätzlich muss bei der Erstellung des Formulars angegeben werden, welches PHP-Skript die Daten des Formulars verarbeiten soll. Das wird zum Beispiel mit folgender Syntax durchgeführt:

<form action="formular.php" method="get">

Als Name für das PHP-Skript wird in diesem Fall der Name verwendet, der auch für das Formular verwendet wird, also die lokale Datei. Allerdings ist diese Vorgehensweise unpraktisch. Wird der Name der Formulardatei geändert, muss der Entwickler auch daran denken, dass er den Namen der Datei in der Zeile ebenfalls korrigiert. Das kann bei komplizierteren Formularen schnell vergessen werden. Besser ist es in diesem Fall, den Namen der Datei im PHP-Skript gleich abzufragen, zum Beispiel mit:

<Form method="get"
Action="<?php echo $_Server["PHP_SELF"]; ?>" >

Post versus Get

Um Formulare zu verarbeiten, lassen sich entweder „Get“ oder „Post“ verwenden. Bisher sind wir in diesem Beitrag von der Verarbeitung mit „Get“ ausgegangen. Dabei werden die Daten über die URL des Formulars übertragen. Bei der Verwendung von „Post“ werden die Daten nicht über die URL übertragen.

Bei „Get“ werden die Daten also im Browser gespeichert, zum Beispiel im Verlauf, und sind daher über diesen Verlauf zugreifbar und auch wiederherstellbar. Diese Verarbeitung wird zu Beginn des Formulars festgelegt:

<form action="formular.php" method="get">

Durch die Verwendung von „Get“ können in PHP mit dem Array „$_GET“ Daten aus dem Formular verarbeitet werden. Um „Post“ zu verwenden, muss das im Formular ebenfalls angegeben werden:

<form action="formular.php" method="post">

Auch hier bietet PHP mit „$_POST“ ein entsprechendes Array an. Mit diesem Array kann ebenfalls auf Formulardaten zugegriffen werden, zum Beispiel mit:

echo htmlcpecialchards ($_POST["vorname"]);

Generell lassen sich also auf beide Arten Daten einlesen und mit PHP verarbeiten. „Get“ hat den Vorteil, dass die eingegebenen Daten in der URL verfügbar und über die URL auch bearbeitbar sind. Im Browserverlauf können die Daten wiederhergestellt werden. Sinnvoll ist der Einsatz zum Beispiel für Suchseiten, da so schnell erkannt wird, nach welchen Begriffen gesucht wird, und auch jederzeit eine Änderung möglich ist.

Soll der Inhalt eines Formulars geheimer verarbeitet werden, zum Beispiel für Anmeldedaten oder Kontaktformulare, kann es sinnvoll sein, „Post“ zu verwenden. Auch für Aktionen in Zusammenhang mit Datenbanken ist „Post“ oft besser geeignet als „Get“.

Während „Get“ die Daten über die URL weitergibt, verwendet „Post“ das Formulardokument dazu. Die Daten sind nicht sofort sichtbar. Allerdings sind mit „Post“ verarbeitete Daten keinesfalls sicher. Auch hier kann eingegriffen werden, um den Daten zu ändern, nur ist der Aufwand etwas höher. Die Datenmenge, die mit „Post“ verarbeitet werden kann ist quasi nicht begrenzt.

(ID:45833233)