Login
Neu hier? Registrieren.
Datentypen, Formatierung und Validierung
eForm ist ein integrierter Form Parser mit getrenntem Formatierungs- und Validationoptionen für jedes einzelne Feld. Um Optionen für ein Feld zu setzten fügt man das Pseudo Attribut eform ins HTML Markup ein.
<input type="text"
name="color" eform="A Color:string:1" />
Das Basis-Aussehen vom eform Tag sieht so aus:
[description/title]:[datatype]:[required]:[validation
message]:[validation rule]
Datentypen
Für Auswahllisten, Checkboxen und Radio-Buttons muss normalerweise kein Datentyp gesetzt werden. Diese Werte werden von eForm automatisch erkannt und gegen die Liste der im Formular platzierten Werte validiert.
Standard Überprüfung: für die als benötigt definierten Felder wird übeprüft, ob sie nicht leer sind.
Nur die folgenden Datentypen müssen gesetzt werden:
- string – Keine spezifische Prüfung, außer ob das Feld leer ist (wenn das Feld als required gesetzt wird)
- date – Überprüft ob es ein valides Datum ist (basiert auf der PHP Funktion strtotime())
- integer – Überprüft ob es sich um ein Nummer handelt (übeprüft nicht wirklich auf integer)
- float – Überprüft ob es sich um eine Nummer handelt.
- email – Überprüft ob es sich um eine E-Mail Adresse handelt (benutzt einen einfachen regulären Ausdruck)
- file – (für Datei uploads) – Überprüft ob die max. Upload Größe überschritten worden ist. Überprüft gegenwärtig nicht, um welchen Dateityp es sich handelt.
- html – Gleich wie string, nur werden Zeilenenden (\n) in <br /> konvertiert
Extended Server Validation
Diese Version setzt erweiterte Server Validation und Wort Filter ein. Es verwendet hierzu komplexe Validation Regeln welche im eForm Tag gesetzt werden kann. Man kann noch 2 extra Validations Parameter angeben, a benutzerdefinierte Fehlermeldung und eine Validation oder Filter Regel.
Beispiel:
eform="Year of
Birth:integer:1:Must be between 1950 and 2002:#RANGE 1950-2002"
Die Validierungsregeln
|
Name |
Beschreibung |
|
#LIST |
|
|
#RANGE |
eine Komma (,) getrennte nummerische Liste oder nummerischem Bereich. Wenn man #RANGE einsetzt ist die Reihenfolge nicht von Bedeutung. Wenn man zB 1~10 oder 10~1 eingibst, validiert er eine Nummer zwischen 1 und 10 (inklusive). Man kann genau so einen negativen wie positiven Bereich angeben. zB: #RANGE 1,3,-5~-15,60~82 |
|
#SELECT |
Eine Liste von Werten aus einer Datenbank Abfrage. Die Abfrage sollte nur eine Spalte von Werten zurückgeben (Die Funktion überprüft nur die erste zurückgegebene Spalte). Man kann die {DBASE}{PREFIX} Tags, welche den Namen der benutzten Datenbank und den Prefix zurück geben, verwenden. zB: #SELECT keyword FROM {PREFIX}site_keywords |
|
#EVAL |
ein String eines PHP Codes. Er sollte true oder false zurückgeben. Obwohl diese Funktion bis zur Version 1.4 funktioniert wird sie zukünftig nicht mehr weiter unterstützt, benutze lieber die #FUNCTION |
|
#FUNCTION |
Name einer Funktion. Die Funktion sollte einen Parameter entgegen nehmen können (der gesendete Wert) und sollte TRUE oder FALSE zurückgeben. Schau dir hierzu die Beispiele an, wie man eine Funktion einbinden kannst zB #FUNCTION myValidateFunction |
|
#REGEX |
Regular Expressions – die selbe Syntax wie die, die in der PHP für die Funktion preg_match() verwendet wird. Siehe dazu ins PHP Manual
zB: example: |
|
#FILTER |
Filter validieren die Eingabe nicht aber ersetzen Wörter bzw. Werte mit Hilfe von Filter Kriterien. Man kann folgende Filter verwenden.
|
select Boxen, Radio Optionen und Checkbox Felder
Select Boxen, Radio Option und Checkbox Felder werden automatisch validiert. Jede Eingabe in diese Felder wird abhängig von den eingegebenen Werten welches im Template angegeben wird validiert. Dies verhindert jegliche Verfälschung welche man bei jedem Feld angegeben hast.
Versteckte (hidden) Felder
Standardmäßig werden versteckte Felder als Schutz vor Verfälschung beim Vergleichen der eingegebenen Werten im Template benutzt (wie zB die select, checkbox und radio Felder). In bestimmten Fällen ist das nicht erwünschenswert. Wenn man bei so einem Fall JavaScript benutzt um ein Resulatat in ein verstecktes Feld einzutragen kannst man es mit dem eForm Attribut verhindern (mit oder ohne eigene Validation).
Versteckte Felder Beispiel 1:
Die Standardeinstellung ist sinnvoll wenn man zum Beispiel die Dokument ID speichern und sicher gehen will, dass diese nicht manipuliert werden kann. Das Formularfeld sieht so aus:
<input type="hidden"
name="docId" value="31" />
Versteckte Felder Beispiel 2:
Nehmen wir an man hast ein Formular wo eine JavaScript eine Kalkulation in ein verstecktes Feld einfügt. Um nun das Validieren dieses Feldes zu verhinden verwendest man folgenden eForm Tag:
<input type="hidden"
name="calculatedField" value="" eform="::0::"
/>
Versteckte Felder Beispiel 3:
Das gleiche Szenario wie in Beispiel 2 aber nehmen wir jetzt an
das man überprüfen will ob ein Wert zurückgeben
worden. Zudem soll der zurückgegebene Wert in einem definierten
Bereich sein. Das eForm Attribut wird so gesetzt:
<input type="hidden"
name="calculatedField" value="" eform="Calculated
Value:integer:1:Calculation out of range:#RANGE 1-10" />
Beispiel Formular Felder
mit Validation
1. eine Selectbox die
ausgefüllt werden muss (die Validation wird nicht benötigt)
<select
name="mySelect" eform_options="Select Country::1"
/> (Datentyp wird leer gelassen)
<option
value="en-au">Australia</option>
<option
value="en-us">USA</option>
</select>
2. Textbox – wird
benötigt und das Format muss ein Datum sein
<input
type="text" name="dobDate" eform="Date of
Birth:date:1:@EVAL return (strtotime($value)!==-1)?true:false;"
/>
3. Textbox – wird
benötigt, die eForm Optionen werden nur einmal benötigt.
<input
type="checkbox" name="myColors[]" value="Red"
eform="Colors::1" /> (Datentyp wird leer
gelassen)
<input type="checkbox" name="myColors[]"
value="Green" />