11.18. Wie erkenne ich fehlerhafte/fehlende Eingaben?Antwort von Kerry W. LothropDie Ü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 EingabenDie 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 generellWenn 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.'); ZahlenfelderUm 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.'); URLsZum Ü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-AdressenDiese 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. |
||
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 |