Formulare mit HTML und PHP

Ein Formular kann Benutzereingaben an den Server übermitteln. Hier die Grundlegende Aspekte, wie man Formulare mit HTML und PHP verwendet.

Diese Zusammenfassung basiert auf dem Corusera Kurs Building Web Applications in PHP – Startseite | Coursera.

Grundaufbau eines HTML Formulars

<form action="formular.php" method="post" > 
    <div>
        <label for="name">Name: </label>
        <input type="text" id="name" name="name">
    </div>
    <input type="submit" value="Senden">
</form>

Das Formular kann viele Input Felder haben. Im Browser wird die Id verwendet um das Label, JS und CSS mit dem entsprechenden Input zuzuordnen. Auf dem Server ist der Name der Key der eingegebenen Werte im übermittelten Array.

Wird das Formular abgesendet, so wird es je nach Methode per GET oder POST an die PHP Datei die als Action definiert ist gesendet.

Übertragen mit Get oder Post

GET verwenden, wenn es sich um eine Suche handelt. Die Parameter sind als „Key-Value Paar“ in der Adresszeile ersichtlich und als Link speicherbar. Es ist zulässig, das dieselben Werte immer wieder an den Server gesendet werden.

POST verbirgt die „Key-Value Paare“. Wenn etwas auf dem Server erstellt oder verändert wird, sowie für grössere Datenmengen und Anmeldedaten wird Post verwendet.

Angriffe via Formular

Benutzereingaben müssen immer geprüft werden.

Ein Formular kann missbraucht werden, um die Website anzugreifen. Deshalb müssen die vom Formular übermittelten Daten, vor der Verarbeitung geprüft werde. Diese Prüfung kann mit den PHP eigenen Filtern und ergänzend mit eigenen Vorkehrungen erfolgen.

Die Prüfung muss auf dem Server erfolgen. Selbst wenn eine Eingaben per Java-Script geprüft wird, kann die Prüfung einfach umgangen werden. Formular Daten mit PHP verarbeiten

Serverseitig muss alles getestet werden. Überprüfungen per Java-Script sollen nur der Benutzerfreundlichkeit dienen.

Label, Platzhalter und Vorgabewerte

Der Nutzer soll einfach erkennen können, wie er das Formular ausfüllen kann. Tritt ein Fehler auf, so ist es für den Nutzer nett wenn seine Eingaben im Formular erhalten bleiben.

<label for="name">Name: </label>
<input type="text" id="name" name="name" 
   placeholder="Daniel" value="<?= htmlentities($ort)?>">

Das Label ist die Beschriftung des Input Feldes. Es soll klar bezeichnen welche Information gefragt ist.

Der Platzhalter soll eine Hilfe sein, damit der Nutzer sieht in welcher Form, er die Information eintragen soll.

Mit Value kann ein Wert als vorgegeben werden. Dieser Wert kann verändert werden oder wenn er passt unverändert abgesendet werden. Dabei, unbedingt bei Benutzereingaben Code-Injection verhindern.