de.comp.lang.php.* FAQ

11.18. Wie erkenne ich fehlerhafte/fehlende Eingaben?

Antwort von Kerry W. Lothrop

Die Überprüfung von Formulareingaben ist in Hinblick auf die Sicherheit eines Skriptes ein nicht zu unterschätzender Faktor. Ausgangspunkt sollte meist das sogenannte Affenformular sein (siehe Von HTML zu PHP: Schreibe Formularverarbeitungen in Normalform).

Erkennen fehlender Eingaben

Die Länge einer Textfeldeingabe lässt sich mit der PHP-Funktion strlen() ermitteln. Leere Strings sind in PHP FALSE, d.h. durch eine Überprüfung auf Wahrheit (if ($_REQUEST['textfeldname'])) lässt sich feststellen, ob der Benutzer eine Eingabe gemacht hat.

Textfelder generell

Wenn ein Textfeld nur bestimmte Zeichen enthalten darf, ist es oft am einfachsten zu überprüfen, ob der übermittelte String Zeichen enthält, die nicht erlaubt sind (siehe auch Welche Bauelemente kommen in Regulären Ausdrücken vor?):

if (preg_match('/[^0-9a-z_.-]/i', $_REQUEST['textfeldname']))
    errmsg('Ungültige Zeichen im Textfeld.');

Zahlenfelder

Um zu überprüfen, ob ein Textfeld eine Zahl enthält, eignet sich die Funktion is_numeric() . Diese Funktion akzeptiert allerdings auch Zeichen, die nicht Ziffern sind (z.B. -1.6e-12). Sollen nur Ziffern akzeptiert werden, helfen wieder Reguläre Ausdrücke:

if (preg_match('/\D/', $_REQUEST['textfeldname']))
    errmsg('Ungültige Zeichen im Zahlenfeld.');

URLs

Zum Überprüfen einer URL reicht es meist aus, deren Anfang zu analysieren:

if (! preg_match('=(https?|ftp)://[a-z0-9]([a-z0-9-]*[a-z0-9])?\.[a-z0-9]=i', $_REQUEST['textfeldname']))
    errmsg('Ungültige URL im Adressfeld.');

Diese Überprüfung soll nur ein Ansatz sein und lässt sich beliebig erweitern/verfeinern. Die tatsächliche Erreichbarkeit gewährleistet diese Vorgehensweise allerdings nicht. Mit Hilfe der Funktion fopen() lässt sich die momentante Erreichbarkeit einer URL feststellen.

E-Mail-Adressen

Diese Frage wird unter Wie kann ich feststellen, ob eine Mailadresse äußerlich gültig ist? und Wie kann ich die Gültigkeit einer Mailadresse testen? beantwortet.

Valid HTML 4.01! Valid CSS!

11.18. Wie erkenne ich fehlerhafte/fehlende Eingaben?
http://www.php-faq.de/q/q-formular-verarbeitung.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team