5:
Dauerstress im Hause Nikolaus. Tausende Pantoffeln, Stiefel und Sandaletten wollen bis zum Morgen gefüllt sein. „Wenigstens muss ich keine Schuhe putzen“, denkt sich der fleißige Geselle.
Aber trotzdem hätte es letztes Jahr fast einen Super-GAU gegeben, weil die Liste mit Naschwerk und Adressen wiedermal in einer echten Sauklaue verfasst war.
„Dieses Jahr wird alles besser“, schwört sich Nik'laus und setzt auf Technik. Er richtet ein paar Webformulare ein und hat — schwuppdiwupp — alles in einer Datenbank. Damit ihn nicht der listige Fehlerteufel noch um den frühen Feierabend bringt, hat er dabei pflichtbewusst einige Validierungen benutzt. 10 der Wichtigsten könnt Ihr hier aus dem elektronischen Stiefel fischen:
Aber trotzdem hätte es letztes Jahr fast einen Super-GAU gegeben, weil die Liste mit Naschwerk und Adressen wiedermal in einer echten Sauklaue verfasst war.
„Dieses Jahr wird alles besser“, schwört sich Nik'laus und setzt auf Technik. Er richtet ein paar Webformulare ein und hat — schwuppdiwupp — alles in einer Datenbank. Damit ihn nicht der listige Fehlerteufel noch um den frühen Feierabend bringt, hat er dabei pflichtbewusst einige Validierungen benutzt. 10 der Wichtigsten könnt Ihr hier aus dem elektronischen Stiefel fischen:
PHP-Code:
// Anmerkung: Die Validierungen sind für Request-Parameterdaten gedacht.
// Daher schieden typechte Validerungsformen, bspw. für INT-Werte, aus.
// Und - ja, wie immer führen viele Wege zum Ziel.
// Nicht-Null, 0 erlaubt
function validate_NN ($value)
{
return (false === empty ($value) || '0' === $value);
}
// Nicht-Null, 0 nicht erlaubt
function validate_NN_int ($value)
{
return (false === empty ($value));
}
// Ganzzahlwert
function validate_int ($value)
{
return (is_numeric ($value) &&
(string) (int) $value === (string) $value);
}
// Formal gültiges deutsches Datum
function validate_date ($value)
{
list ($day , $month , $year) = preg_split ('#[\./-]\s*#' , $value , 3);
if (false === is_numeric ($day) ||
false === is_numeric ($month) ||
false === is_numeric ($year) ||
$day != (int) $day ||
$month != (int) $month ||
$year != (int) $year ) {
return (false);
}
return (checkdate ($month , $day , $year));
}
// Alter aus Geburtsdatum 18-100
function validate_age ($value)
{
list ($day , $month , $year) = preg_split ('#[\./-]\s*#' , $value , 3);
// check formal
if (false === is_numeric ($day) ||
false === is_numeric ($month) ||
false === is_numeric ($year) ||
$day != (int) $day ||
$month != (int) $month ||
$year != (int) $year ) {
return (false);
}
// check range
$timestamp = mktime (0 , 0 , 1 , $month , $day , $year);
return (strtotime ('- 18years') > $timestamp &&
strtotime ('- 100years') < $timestamp);
}
// Datum ohne Umlaute
function validate_alpha ($value)
{
return (0 === preg_match ('#[^a-z]#i' , $value));
}
// Telefonnummer, einfach
function validate_phone ($value)
{
$minlength = 3;
if (preg_match ('#[^0-9\+\-\040/]#' , $value)) {
return (false);
}
return (strlen (trim ($value)) >= $minlength);
}
// Einfache Email
function validate_email ($value)
{
return (1 === preg_match ('#^\w+(?:[\.\-]\w+)*?@\w{3,}(?:[\-_]\w+)*?\.\w{2,5}(?:\.\w{2,5})?$#' , $value));
}
// Einfache URL
function validate_url ($value)
{
return (0 === preg_match ('#[ÖÜÄöüäß\s]#' , $mValue) &&
1 === preg_match ('#^https?://(?:\w{2,}(?:[\-_]\w+)*\.)+\w{2,5}(?:\.\w{2,5})?(?:[\?\#/][^\s]*)?$#' , $value));
}
// Deutsche PLZ
function validate_zip ($value)
{
$value = ltrim ($value , ' 0');
if (false === is_numeric ($value) && (string) (int) $value === (string) $value) {
return (false);
}
return (999 < (int) $value && (int) $value < 100000);
}
// Der Nikolaus übernimmt keine Gewähr für die Richtigkeit und empfiehlt einen
// ausgiebigen Testprozess vor jeglicher Nutzung in Produktivsystemen!
Kommentar