You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Dieses Projekt enthält die Klasse Validation, mit der Formularübergaben anhand von Regelmengen überprüft werden können.
Verwendung
include_oncedirname(__FILE__) . '/../Assistants/vendor/Validation/Validation.php';
// ab hier wird ein neuer Regelsatz für $_POST['action'] definiert,// wobei das Feld nur die Werte 'SetPassword' und 'SetAccountInfo' haben darf// oder nicht existieren darf (sodass es zu 'noAction' wird)$val = Validation::open($_POST)
->addSet('action',
array('set_default'=>'noAction',
'satisfy_in_list'=>array('noAction', 'SetPassword', 'SetAccountInfo'),
'on_error'=>array('type'=>'error',
'text'=>'unbekannte Aktion')));
$result = $val->validate(); // liefert die Ergebnismengeif ($val->isValid()){
// $_POST['action'] erfüllt die Regelmenge und kann genutzt werdenecho$result['action'];
} else {
// wenn die Eingabe nicht validiert werden konnte, können hier die// Fehlermeldungen behandelt werden$notifications = $val->getNotifications();
}
Selektoren
Sie können mit diesen Funktionen die Elemente der Eingabe auswählen, welche dann die definierten Regeln
erfüllen sollen. Dabei gibt es Selektoren mit den Präfixen key_ und elem_.
key_ => wählt die ELemente anhand des Schlüssels (aus einem Array)
elem_ => wählt die ELemente anhand des Wertes (aus einem Array)
// Das Feld $_POST['elem'] soll ein gültiger md5-Hash sein.$val = Validation::open($_POST);
$val->addSet(['key' => 'elem'],
['valid_md5']);
Man kann ['key' => 'elem'] auch als 'elem' schreiben.
key_list
// Die Felder a, b, und c aus $_POST sollen ein gültiger md5-Hash sein.$val = Validation::open($_POST);
$val->addSet(['key_list' => ['a', 'b', 'c']],
['valid_md5']);
key_all
// Alle Elemente des Arrays $_POST['externalId'] sollen einen regulären Ausdruck erfüllen.// Dazu wird das Array mit perform_this_array durchlaufen und bei der Auswahl der Felder// sind dann alle (key_all) erlaubt.$val = Validation::open($_POST);
$val->addSet('externalId',
['perform_this_array'=>[[['key_all'],
['satisfy_regex'=>'%^([a-zA-Z0-9_]+)$%']]]]);
key_regex
// Es werden die Felder aus $_POST ausgewählt, welche den Ausdruck %^([a-zA-Z0-9_]+)$% erfüllen.$val = Validation::open($_POST);
$val->addSet(['key_regex' => '%^([a-zA-Z0-9_]+)$%'],
['valid_md5']);
key_numeric
// Es werden die Felder aus $_POST ausgewählt, welche vom Typ Integer sind oder eine Ganzzahl// darstellen (als String).$val = Validation::open($_POST);
$val->addSet(['key_numeric'],
['valid_md5']);
key_integer
// Es werden die Felder aus $_POST ausgewählt, welche vom Typ Integer sind.$val = Validation::open($_POST);
$val->addSet(['key_integer'],
['valid_md5']);
key_min_numeric
// Es werden die Felder aus $_POST ausgewählt, welche mindestens den Schlüsselwert 100 besitzen.$val = Validation::open($_POST);
$val->addSet(['key_min_numeric' => 100],
['valid_md5']);
key_max_numeric
// Es werden die Felder aus $_POST ausgewählt, welche maximal den Schlüsselwert 100 besitzen.$val = Validation::open($_POST);
$val->addSet(['key_max_numeric' => 100],
['valid_md5']);
key_starts_with
// Es werden die Felder aus $_POST ausgewählt, deren Schlüssel mit abc beginnt.$val = Validation::open($_POST);
$val->addSet(['key_starts_with' => 'abc'],
['valid_md5']);
key_union
// Es werden die Felder aus $_POST ausgewählt, deren Schlüssel mit aaa oder bbb beginnen.$val = Validation::open($_POST);
$val->addSet(['key_union' => ['key_starts_with' => 'aaa',
'key_starts_with' => 'bbb']],
['valid_md5']);
key_intersection
// Es werden die Felder aus $_POST ausgewählt, welche mindestens den Schlüsselwert 100 besitzen und mit '2' beginnen.$val = Validation::open($_POST);
$val->addSet(['key_intersection' => ['key_min_numeric' => '100',
'key_starts_with' => '2']],
['valid_md5']);
der Bezeichner des Feldes, welches gleich sein soll
// das Feld $_POST['newPasswordRepeat'] soll den selben Inhalt// wie das Feld $_POST['newPassword'] haben$val = Validation::open($_POST);
$val->addSet('newPasswordRepeat',
array('satisfy_equals_field'=>'newPassword'));
satisfy_not_equals_field
Aufbau
satisfy_not_equals_field=>param
Parameter
Typ
Beschreibung
param
string
der Bezeichner des Feldes, welches nicht gleich sein soll
// das Feld $_POST['deleteSheetWarning'] darf nicht den selben// Inhalt wie das Feld $_POST['deleteSheet'] haben$val = Validation::open($_POST);
$val->addSet('deleteSheetWarning',
array('satisfy_not_equals_field'=>'deleteSheet'));
satisfy_regex
Aufbau
satisfy_regex => param
Parameter
Typ
Beschreibung
param
string
regulärer Ausdruck
// das Feld $_POST['key'] muss den regulären Ausdruck// %^([a-zA-Z0-9_]+)$% erfüllen$val = Validation::open($_POST);
$val->addSet('key',
array('satisfy_regex'=>'%^([a-zA-Z0-9_]+)$%'));
// das Feld $_POST['field'] soll >= 0 sein$val = Validation::open($_POST);
$val->addSet('field',
array('satisfy_min_numeric'=>0));
satisfy_max_numeric
Aufbau
satisfy_max_numeric => param
Parameter
Typ
Beschreibung
param
string/integer/float
Maximalwert
// das Feld $_POST['field'] soll <= 100 sein$val = Validation::open($_POST);
$val->addSet('field',
array('satisfy_max_numeric'=>100));
satisfy_exact_numeric
Aufbau
satisfy_exact_numeric => param
Parameter
Typ
Beschreibung
param
string/integer/float
Vergleichswert
// das Feld $_POST['field'] soll genau 50 sein$val = Validation::open($_POST);
$val->addSet('field',
array('satisfy_exact_numeric'=>50));
satisfy_min_len
Aufbau
satisfy_min_len => param
Parameter
Typ
Beschreibung
param
string/integer/float
Mindestlänge
// die Länge des Feldes $_POST['newPassword']// soll >= 6 sein$val = Validation::open($_POST);
$val->addSet('newPassword',
array('satisfy_min_len'=>6));
satisfy_max_len
Aufbau
satisfy_max_len => param
Parameter
Typ
Beschreibung
param
string/integer/float
Maximallänge
// die Länge des Feldes $_POST['newPassword']// soll <= 255 sein$val = Validation::open($_POST);
$val->addSet('newPassword',
array('satisfy_max_len'=>255));
satisfy_exact_len
Aufbau
satisfy_exact_len => param
Parameter
Typ
Beschreibung
param
string/integer/float
Vergleichswert
// die Länge des Feldes $_POST['newPassword']// soll genau 8 sein$val = Validation::open($_POST);
$val->addSet('newPassword',
array('satisfy_exact_len'=>8));
satisfy_in_list
Aufbau
satisfy_in_list => param
Parameter
Typ
Beschreibung
param
array(val0,val1, ... )
Liste der Vergleichswerte
val
mixed
Vergleichswerte
// das Feld $_POST['action'] soll einen der// Werte 'SetPassword' oder 'SetAccountInfo' enthalten// und wenn es nicht gesetzt ist 'noAction'$val = Validation::open($_POST);
$val->addSet('action',
array('satisfy_in_list'=>array('noAction', 'SetPassword', 'SetAccountInfo')));
satisfy_not_in_list
Aufbau
satisfy_not_in_list => param
Parameter
Typ
Beschreibung
param
array(val0,val1, ... )
Liste der Vergleichswerte
val
mixed
Vergleichswerte
// das Feld $_POST['action'] darf nicht die Werte// 'SetPassword' oder 'SetAccountInfo' haben$val = Validation::open($_POST);
$val->addSet('action',
array('satisfy_not_in_list'=>array('SetPassword', 'SetAccountInfo')));
satisfy_value
Aufbau
satisfy_value => param
Parameter
Typ
Beschreibung
param
mixed
Vergleichswert
// das Feld $_POST['action'] muss den// Wert -1 haben$val = Validation::open($_POST);
$val->addSet('action',
array('satisfy_value'=>'-1'));
satisfy_file_exists
// die hochgeladene Datei in $_FILES['MarkingFile']// soll existieren$val = Validation::open($_FILES);
$val->addSet('MarkingFile',
['satisfy_file_exists']);
// die notwendigen Felder der hochgeladenen Datei// sollen in $_FILES['MarkingFile'] gesetzt sein$val = Validation::open($_FILES);
$val->addSet('MarkingFile',
['satisfy_file_isset']);
satisfy_file_error
satisfy_file_no_error
satisfy_file_extension
Aufbau
satisfy_file_extension => param oder satisfy_file_extension => array(param,param,...)
Parameter
Typ
Beschreibung
param
string
Dateiendung
// die hochgeladene Datei in $_FILES['MarkingFile'] soll// die Dateiendung .zip besitzen$val = Validation::open($_FILES);
$val->addSet('MarkingFile',
['satisfy_file_extension'=>'zip']);
satisfy_file_mime
Aufbau
satisfy_file_mime => param oder satisfy_file_mime => array(param,param,...)
Parameter
Typ
Beschreibung
param
string
Strukturtyp
// die hochgeladene Datei in $_FILES['MarkingFile'] soll// den Strukturtyp application/zip haben$val = Validation::open($_FILES);
$val->addSet('MarkingFile',
['satisfy_file_mime'=>'application/zip']);
satisfy_file_name => param oder satisfy_file_name => array(param,param,...)
Parameter
Typ
Beschreibung
param
string
Dateiname
// die hochgeladene Datei in $_FILES['MarkingFile'] soll// den Dateiname upload.zip haben$val = Validation::open($_FILES);
$val->addSet('MarkingFile',
['satisfy_file_name'=>'upload.zip']);
satisfy_file_name_strict
// die hochgeladene Datei in $_FILES['MarkingFile'] darf// im Dateinamen nur die Zeichen a-z,A-z,0-9 und .-_ enthalten$val = Validation::open($_FILES);
$val->addSet('MarkingFile',
['satisfy_file_name_strict']);
to_float
// wandelt $_POST['field'] in eine Gleitkommazahl um$val = Validation::open($_POST);
$val->addSet('field',
['to_float']);
to_string
// wandelt $_POST['field'] in einen String um$val = Validation::open($_POST);
$val->addSet('field',
['to_string']);
// $_POST['startDate'] soll in einen unix-Zeitstempel umgewandelt werden$val = Validation::open($_POST);
$val->addSet('startDate',
array('satisfy_exists',
'to_timestamp'));
on_error
Aufbau
on_error => array(type,text,abortSet)
Parameter
Typ
Beschreibung
Vorgabewert
type (optional)
string
Bezeichner für den Meldungstyp (Bsp.: warning, error oder message)
message
text (optional)
string
Meldungstext
abortSet (optional)
bool
true = im Fehlerfall die Validierung beenden, false = sonst
true
// das Feld $_POST['action'] soll existieren, ansonsten// soll eine Fehlermeldung generiert werden$val = Validation::open($_POST);
$val->addSet('action',
array('satisfy_exists',
'on_error'=>array('type'=>'error',
'text'=>'unbekannte Aktion')));
Bezeichner für den Meldungstyp (Bsp.: warning, error oder message)
message
text (optional)
string
Meldungstext
abortSet (optional)
bool
true = im Fehlerfall die Validierung beenden, false = sonst
false
// wenn das Feld $_POST['action'] existiert, soll eine// Erfolgsmeldung erzeugt werden (kein Abbruch)$val = Validation::open($_POST);
$val->addSet('action',
array('satisfy_exists',
'on_success'=>array('text'=>'Aktion existiert')));
logic_or
// das Feld $_POST['key'] darf entweder ein gültiger identifier// oder der leere String sein$val = Validation::open($_POST);
$val->addSet('key',
array('logic_or'=>[['satisfy_value'=>''],
['valid_identifier']]));
perform_this_foreach
// alle Schlüssel des Arrays $_POST['approvalCondition'] sollen gültige// identifier sein und alle darin enthaltenen Elemente zwischen// 0 und 100 liegen$val = Validation::open($_POST);
$val->addSet('approvalCondition',
array('set_default'=>array(),
'perform_this_foreach'=>[['key',
['valid_identifier']],
['elem',
['to_integer',
'satisfy_min_numeric'=>0,
'satisfy_max_numeric'=>100]]]));
perform_foreach
perform_this_array
// die Elemente des Arrays $_POST['proposal'] sollen// gültige identifier sein$val = Validation::open($_POST);
$val->addSet('proposal',
['perform_this_array'=>[[['key_all'],
['valid_identifier']]]]);
perform_array
perform_switch_case
// es sollen die Felder $_POST['elem']['proposal'] und// $_POST['elem']['marking'] geprüft werden$val = Validation::open($_POST);
$val->addSet('elem',
['perform_switch_case'=>[['proposal',
[...]],
['marking',
[...]]]]);
sanitize_url
// die URL in $_POST['url'] wird mit filter_var($elem, FILTER_SANITIZE_URL) behandelt$val = Validation::open($_POST);
$val->addSet('url',
array('sanitize_url'));
// alle Elemente in $_GET werden bereinigt, mit htmlspecialchars(trim($elem), ENT_QUOTES, 'UTF-8') $val = Validation::open($_GET, array('preRules'=>array('sanitize')));
set_default
// wenn der Wert $_POST['action'] nicht gesetzt ist// soll er 'noAction' sein$val = Validation::open($_POST);
$val->addSet('action',
array('set_default'=>'noAction'));
set_copy
// erstellt das Feld $_POST['newField'] und kopiert// dort $_POST['oldField'] hinein$val = Validation::open($_POST);
$val->addSet('oldField',
array('set_copy'=>'newField'));
set_value
// setzt den Wert des Feldes $_POST['field']// auf 1234$val = Validation::open($_POST);
$val->addSet('field',
array('set_value'=>'1234'));
set_field_value
// setzt den Wert des Feldes $_POST['field']// auf $_POST['otherField']$val = Validation::open($_POST);
$val->addSet('field',
array('set_field_value'=>'otherField'));
set_error
// es wird das Feld $_POST['field'] ausgewählt und anschließend die // Validierung abgebrochen (kann auch auf false gesetzt werden).// Dabei ignorieren manche Befehle diesen Fehlerwert und werden trotzdem ausgeführt// (Bsp.: Fehlermeldungen).$val = Validation::open($_POST);
$val->addSet('field',
array('set_error'=>true));
valid_email
// das Feld $_POST['email'] soll eine gültige EMail-Adresse enthalten$val = Validation::open($_POST);
$val->addSet('email',
['valid_email']);
valid_url
// das Feld $_POST['back'] soll eine gültige URL enthalten$val = Validation::open($_POST);
$val->addSet('back',
['valid_url']);
// das Feld $_POST['elem'] darf nur a-z, A-Z und Leerzeichen enthalten$val = Validation::open($_POST);
$val->addSet('elem',
array('valid_alpha'));
valid_alpha_space
// das Feld $_POST['elem'] darf nur a-z und A-Z enthalten$val = Validation::open($_POST);
$val->addSet('elem',
array('valid_alpha_space'));
valid_integer
// das Feld $_POST['elem'] darf nur 0-9 enthalten$val = Validation::open($_POST);
$val->addSet('elem',
array('valid_integer'));
valid_alpha_numeric
// das Feld $_POST['elem'] darf nur 0-9, a-z und A-Z enthalten$val = Validation::open($_POST);
$val->addSet('elem',
array('valid_alpha_numeric'));
valid_alpha_space_numeric
// das Feld $_POST['elem'] darf nur 0-9, a-z, A-Z und Leerzeichen enthalten$val = Validation::open($_POST);
$val->addSet('elem',
array('valid_alpha_space_numeric'));
valid_json
// das Feld $_POST['elem'] muss gültiges json enthalten$val = Validation::open($_POST);
$val->addSet('elem',
array('valid_json'));
to_structure
is_float
// das Feld $_POST['elem'] soll vom Typ float sein oder sich darin umwandeln lassen$val = Validation::open($_POST);
$val->addSet('elem',
array('is_float'));
is_boolean
// das Feld $_POST['elem'] soll einen gültigen Wahrheitswert darstellen$val = Validation::open($_POST);
$val->addSet('elem',
array('is_boolean'));
is_integer
// das Feld $_POST['elem'] soll einen gültigen Zahlwert darstellen oder darin umgewandelt werden können$val = Validation::open($_POST);
$val->addSet('elem',
array('is_integer'));
is_string
// das Feld $_POST['elem'] soll einen gültigen String darstellen$val = Validation::open($_POST);
$val->addSet('elem',
array('is_string'));
is_array
// das Feld $_POST['rights'] muss ein Array sein$val = Validation::open($_POST);
$val->addSet('rights',
array('is_array'));