mAu
Erfahrenes Mitglied
Servus Leute,
nach längerer Zeit mal was neues von mir. Ich musste letztens für eine Seite mehrere Formulare mit teilweise mehr als 80 Eingabefeldern auswerten, da ich das etwas eleganter als mit riesigen if-else-Konstruktionen lösen wollte, habe ich mich ein bisschen umgesehen und einen recht interessanten Ansatz im Retro-Framework gefunden, leicht abgewandelt und erweitert.
Die Funktionsweise ist folgende:
Für jedes zu validierende Formular wird eine *.ini-Datei in dem Ordner /Forms abgelegt, diese ist wie folgt aufgebaut:
Wir haben also zwei Felder, einmal "formfield-name" und einmal "if-rule-field", welches nur überprüft wird, wenn formfield-name 1 entspricht.
Der PHP-Code zur Überprüfung sieht wie folgt aus:
Naja, schauts euch mal an und sagt mir, was Ihr davon haltet. Seht Ihr irgendwelche Sicherheitsrisiken? Habt Ihr Fragen oder Verbesserungsvorschläge?
Danke und Grüße,
Mau
nach längerer Zeit mal was neues von mir. Ich musste letztens für eine Seite mehrere Formulare mit teilweise mehr als 80 Eingabefeldern auswerten, da ich das etwas eleganter als mit riesigen if-else-Konstruktionen lösen wollte, habe ich mich ein bisschen umgesehen und einen recht interessanten Ansatz im Retro-Framework gefunden, leicht abgewandelt und erweitert.
Die Funktionsweise ist folgende:
Für jedes zu validierende Formular wird eine *.ini-Datei in dem Ordner /Forms abgelegt, diese ist wie folgt aufgebaut:
Code:
min-length = "Fehlermeldung, zu wenig Zeichen (mind. %2$s) für %1$s eingegeben"
max-length = "Zu viele Zeichen (max. %2$s) für %1$s eingegeben"
[formfield-name]
rule = Match:0,1 #Name der Validatorklasse, optional Parameterübergabe (hier 0 und 1)
name = "Testfeld" # Name des Testfeldes, wichtig für min- und max-length
error = "Nur 0 und 1 erlaubt"
min-length = 1
max-length = 5
[if-rule-field]
if = ":formfield-name == 1" # wird nur ausgeführt, wenn formfield-name == 1 ist
rule = Numeric
name = "If-Field"
error = "Nur Zahlen bitte"
max-length = 5
Der PHP-Code zur Überprüfung sieht wie folgt aus:
PHP:
<?php
// der erste Parameter enthält die Formulardaten, in dem Fall per Post übergeben, der Zweite den Namen der INI-datei ohne Erweiterung, der dritte (optional) die Sprache der Ini-Datei
$validator = new FormValidator($_POST, 'test', 'de-DE');
$errors = $validator->validate();
if($errors->hasErrors())
foreach($errors as $error)
echo "{$error['message']}\n<br>";
else
echo "Formular ist geprüft und valide";
?>
Danke und Grüße,
Mau