Im Downloadbereich habe ich bereits eine Bibliothek zum Validieren von Formularen verlinkt. Es handelt sich um jsVal, eine kleine Datei mit großer Wirkung :) Leider hat sich immer wieder herausgestellt, das es mit Javascript unmöglich ist, eine Validierung zu garantieren. Irgendwelche Trottel haben Javascript immer ausgeschaltet oder es buggt. Naja.
Wohl oder über muss man die Validierung von Formularen dann mit PHP machen. Und das ist keine angenehme Sache: Eine Seite mit Formular, eine PHP Seite mit Formularhandler und Validierung, eine andere für die obligatorische Dankeschön-Seite. Irgendwelche undurchschaubaren If- und Regex-Ausdrücke und vieles mehr tummeln sich dort.
Abgesehen von der nahezu grenzenlosen Unübersichtlichkeit (Gerade bei großen Formularen) ist der größte Feind die Implementierung: Hat man auf einer Website mehrere Formulare (und das ist ja in der Regel so), muss man die Validierung für jedes Formular extra bauen. Na toll, Copy&Paste lässt grüßen.

Zeit für eine Bibliothek, die die Welt verändert! Zeit für eine total einfach einsetzbare Bibliothek. Grenzenlos erweiterbar und trotzdem individuell: Der Traum eines jeden Programmierers ;-) Wer weiterliest, bekommt als Dankeschön einen Downloadlink nebst Anleitung…
Das Prinzip ist zunächst einfach erklärt: Man schickt das Formular an eine Seite, die es validiert (Kann auch die selbe sein, die das Formular enthält). Für die Validierung erstellt man ein Prüfungsobjekt:
$pruefung= new FormValidation("formular");
Das Prüfungsobjekt wird mit Regeln bestückt. Pro Regel muss man zunächst unterscheiden zwischen optionalen und Muss-Feldern. Dann den Prüfungstype festlegen und eine Fehlermeldung vergeben:
$pruefung->requireField(  "PLZ",  new FieldZipCode(),  "Bitte eine PLZ eingeben." );
Übrigens, diese Prüfungen kann man beliebig kombinieren. Einfach nacheinander angeben… Danach noch die Prüfung ausführen:
$ergebnis= $pruefung->check();
Wenn die Prüfung erfolgreich war (true, keine Fehler sind aufgetreten), kann das Formular weiterverarbeitet werden. Andernfalls gibt man die Fehlermeldungen aus:
$pruefung->echoErrorMessages();
Und danach die CSS-Regeln für die zu highlightenden Formularfelder:
$pruefung->echoErrorStyles();
Alles natürlich schön XHTML und CSS kompatibel. Die CSS-Regeln können total unproblematisch überschrieben werden.
Damit die Prüfungen möglichst einfach erweitert und an die eigene Applikation angepasst werden können, sind diese als eigene Objekte realisiert. Der Konstruktor ist komplett frei wählbar. Das hat den Vorteil, das alle Prüfungen frei parametrisiert werden können. Im Klartext: man kann beliebige Formularvalidierungen damit bauen sogar die Datenbank abzugleichen ist kein Problem. Eigene Datentypen? Auch kein Ding. Trotzdem updatefähig? Na klar :)
Folgende Prüfungen sind standardmäßig mit dabei:
- Mit irgendwas gefüllt (FieldFilled)
Egal was drin steht, es wird alles akzeptiert, solange es keine Steuerzeichen und Whitespaces sind. - Begrenzung der Zeichenanzahl (FieldLength)
Für die Zeichenanzahl können Minimal- und Maximalwerte bestimmt werden. - Nummer (FieldNumber)
Eine Zahl aus einem frei wählbaren Bereich wird akzeptiert, Minimal und Maximalwerte können im Konstruktor angegeben werden. - Benutzername (FieldUsername)
Nur Buchstaben, Zahlen und _Â werden akzeptiert, prima kombinierbar mit der Zeichenanzahl. - Postleitzahl (FieldZipCode)
Die Länge der Postleitzahl kann mittels Minimal- und Maximalwerten frei definiert werden. Hier sind nur Zahlen zulässig, UK Zip Codes funktionieren also nicht. - Emailadresse (FieldEmail)
Ganz klar, eine Emailadresse wie man sie kennt, ist zugelassen.
Jetzt noch der Download der Dateien + Beispiel:
http://www.phpblogger.net/download/phpValidierung.zip


















