MWCodebymw.de ↗
PHP

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

#filter_var#Validierung#Sicherheit#Eingaben#PHP

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 →