Eingaben validieren mit filter_var – E-Mail, URL und Zahlen
Nie blind einer Nutzereingabe vertrauen. filter_var prüft E-Mail-Adressen, URLs und Zahlen mit eingebauten Filtern – zuverlässiger und lesbarer als selbstgebaute Regex.
E-Mail-Adressen mit einer selbstgebauten Regex zu prüfen, geht fast immer daneben – der offizielle Standard ist erstaunlich kompliziert. PHP bringt mit filter_var fertige, gut getestete Filter mit. Nutze sie, statt das Rad neu zu erfinden.
E-Mail und URL prüfen
filter_var gibt den geprüften Wert zurück – oder false, wenn er ungültig ist:
$mail = filter_var($_POST['email'] ?? '', FILTER_VALIDATE_EMAIL);
if ($mail === false) {
http_response_code(422);
exit('Ungültige E-Mail-Adresse');
}
$url = filter_var($_POST['website'] ?? '', FILTER_VALIDATE_URL);Zahlen sicher einlesen
Bei Zahlen ist die Tücke: "5" ist gültig, aber auch "5abc" würde ein einfaches (int) klaglos zu 5 machen. filter_var mit Bereichsgrenzen ist strenger:
$alter = filter_var($_POST['alter'] ?? '', FILTER_VALIDATE_INT, [
'options' => ['min_range' => 0, 'max_range' => 120],
]);
if ($alter === false) {
exit('Bitte ein Alter zwischen 0 und 120 angeben');
}Der häufigste Fehler
Vorsicht bei der 0: FILTER_VALIDATE_INT liefert für die Eingabe "0" den Wert int(0) – und 0 ist in PHP „falsy". Prüfe deshalb immer streng mit === false, nicht mit if (!$alter), sonst verwirfst du die gültige Null.
Wichtig zur Einordnung: filter_var prüft das Format, nicht die Echtheit. Ob eine E-Mail-Adresse wirklich existiert, sagt dir erst eine Bestätigungsmail. Und für die Ausgabe brauchst du weiterhin htmlspecialchars, für die Datenbank Prepared Statements.
Saubere Eingabevalidierung ist die erste Verteidigungslinie jeder Anwendung. Solche Backends baue ich – schau auf bymw.de.
Quellen
Du brauchst mehr als ein Snippet?
Ich entwickle Android-Apps in Kotlin und moderne Websites für Selbstständige und kleine Unternehmen — von der ersten Idee bis zum Release.
Projekt anfragen →Verwandte Snippets
XSS verhindern in PHP – Ausgaben richtig escapen mit htmlspecialchars
SQL-Injection verhinderst du mit Prepared Statements – aber der andere große Angriff, XSS, passiert bei der AUSGABE. Ich zeige dir, warum du jede dynamische Ausgabe mit htmlspecialchars und ENT_QUOTES escapen musst und wie ein kurzer Helfer das übernimmt.
Datei-Uploads in PHP sicher entgegennehmen
Ein Upload-Formular ist schnell gebaut – aber ohne Prüfung ein Einfallstor. Ich zeige dir, wie du Uploads richtig annimmst: echten MIME-Typ prüfen, Größe begrenzen, einen zufälligen Namen vergeben und außerhalb des Web-Roots speichern.
Sessions und CSRF-Schutz in PHP – Formulare gegen Fremdzugriff absichern
Ein Login ohne CSRF-Schutz lässt sich von fremden Seiten missbrauchen. Ich zeige dir das Token-Muster, das jedes Formular absichert – erzeugen, verstecktes Feld, per hash_equals prüfen – plus die richtigen Session-Cookie-Einstellungen.