Formular-Daten validieren
- Formulare im Schnellverfahren mit Form Tools
- Formular-Daten validieren
Bei mehrseitigen Formularen darf der Parameter...
Bei mehrseitigen Formularen darf der Parameter
"finalize" => true
übrigens nur auf der letzten Formularseite vorkommen.Als Nächstes ändern wir den form-Tag im Formular:
<form action="<?php echo $_SERVER
["PHP_SELF"]?>" method="POST">
Damit ruft die Seite sich quasi selbst wieder auf, sobald das Formular abgeschickt wird. Die Funktion ft_api_process_form() der API sorgt dann für eine korrekte Weiterleitung. Die Seite, auf die der User nach Abschicken des Formulars weitergeleitet wird, benötigt ebenfalls den Aufruf der API. Dafür ergänzen wir die Datei direkt in der ersten Codezeile um die folgenden Zeilen und passen die Pfad-Informationen wieder entsprechend an:
<?php
require_once("pfad/zu/form_tools/
global/api/api.php");
$fields = ft_api_init_form_page();
ft_api_clear_form_sessions();
?>
Das Skript überträgt hiermit sämtliche eingegebene Daten in die Variable $fields, sodass Sie die vom User eingegebenen Werte auf der Zielseite noch einmal anzeigen oder anderweitig verarbeiten können. Zum anderen wird die Form-Tools-Session beendet, um die zwischengespeicherten Daten am Server zu löschen.Nun legen Sie wieder ein neues Formular in Form Tools an, nur dass Sie diesmal die Option Code auswählen. Das Skript fordert Sie auf, die Zeile
$fields = ft_api_init_form_page
("", "test");
aus dem PHP-Code der Formular-Datei zu ersetzen. Dies geschieht mit einer Zeile ähnlich der folgenden:
$fields = ft_api_
init_form_page(2,
"initialize");

Jetzt ist es an der Zeit, wie beim einfachen Formular auch, das Formular im Browser aufzurufen und einen vollständigen Datensatz an Form Tools zu schicken. Der weitere Ablauf für die Einrichtung des Formulars in Form Tools ist identisch mit dem bei einfachen Formularen.Zum Abschluss muss dann noch die eben zur Initialisierung geänderte Zeile erneut geändert und damit das Formular einsatzfähig gemacht werden. Die Zeile sieht dann beispielsweise etwa so aus:
$fields = ft_api_init_form_page(4711);
Um sicherzugehen, dass das Formular funktioniert, rufen Sie jetzt die PHP-Datei auf, die der User nach Absenden des Formular sehen soll. Damit bereinigen Sie alle Sessions, die während der Initialisierung geöffnet wurden. Danach sollte das Formular fehlerfrei funktionieren.
Formular-Daten validieren
Für die einfache Formular-Verarbeitung mit process.php steht lediglich eine clientseitige Validierung der Formular-Daten zur Verfügung, die nötige JavaScript-Bibliothek Really Simple Validation (RSV; www.benjaminkeen.com/software/rsv/ ) liefert Form Tools aber gleich mit. Zunächst wird die Bibliothek in die Webseite mit dem Formular integriert. Die folgende Codezeile muss im <head>-Bereich der Seite stehen:
<script type="text/javascript" src=
"https://www.meine-domain.de/form_
tools/global/scripts/rsv.js"></script>

Nun müssen Sie noch die Regeln für die Validierung definieren, was mit RSV ganz einfach über ein Array funktioniert. Das folgende Beispiel erklärt Vornamen und E-Mail-Adresse zu Pflichtfeldern, prüft auf korrektes E-Mail-Adressformat und fordert den User gegebenenfalls dazu auf, die fehlenden Daten zu ergänzen, und zwar ebenfalls im <head>-Bereich der HTML-Datei. Die letzten beiden Code-Zeilen sind nötig, um die Integration von RSV in Form Tools fehlerfrei funktionieren zu lassen und sind weiter nicht von Belang:
<script type="text/javascript">
var rules = [];
rules.push("required,Vorname,Bitte
geben Sie Ihren Vornamen ein.");
rules.push("required,email,Bitte
geben Sie Ihre E-Mail-Adresse ein.");
rules.push("valid_email,email,Die
E-Mail-Adresse ist fehlerhaft.");
rsv.errorFieldClass = null;
rsv.displayType = "alert-all";</script>
RSV stellt eine Vielzahl vorgefertigter Regeln zur Verfügung und ermöglicht sogar eine Prüfung von Formulardaten nach RegEx-Regeln. Zu beachten ist, dass die Fehlermeldung, also der dritte Parameter in der Regel-Definition, keine Kommas enthalten darf. Damit die Prüfung der Formulardaten auch ausgeführt wird, müssen Sie nun noch das HTML-Formular den entsprechenden JavaScript-Aufruf ergänzen:
<form ... onsubmit="return rsv.
validate(this, rules)">
Serverseitige Validierung
Die serverseitige Validierung von Formulardaten mit PHP funktioniert nur bei Einsatz der API. Wer ein Formular zunächst clientseitig mit RSV validiert hat, kann die dort erstellen Validierungsregeln nahezu unverändert für die PHP-Validierung übernehmen. Es spricht also nichts dagegen, die Validierung zunächst lokal zu testen und dann erst in eine serverseitige Validierung zu überführen.Für die serverseitige Validierung ist etwas mehr PHP-Code nötig, ein gutes Tutorial beschreibt das Vorgehen aber detailliert, sodass die Einrichtung schnell erledigt ist (docs.formtools.org/tutorials/php_validation/index.php ). Dasselbe gilt für den optionalen Spamschutz via reCaptcha (docs.formtools.org/tutorials/post_form_captchas/ ).
Listings
Unsere Listing enthalten jeweils den Code für ein Beispiel-Formular in der einfachen und in der API-Variante inklusive Validierung. Beachten Sie, dass in den Listings die Serverpfade und die jeweilige Formular-ID angepasst werden müssen, damit die Formulare funktionieren. Und natürlich müssen die entsprechenden Formulare auch in Ihrer Form-Tool-Installation angelegt werden. Unsere Listings zu Beispiel-Formularen für die einfache und die Ajax-Variante inklusive Validierung sowie die zugehörigen Ausstiegs-Seiten finden Sie auf magnus.de .