MB Dev .tech
Registrieren Login

Forms · Validierung Basics

← Zurück zu Forms, Requests & State

Sobald du Eingaben annimmst (Formulare, URLs, API-Requests), brauchst du Validierung. Validierung bedeutet: Du prüfst, ob Daten erlaubt und plausibel sind, bevor du damit weiterarbeitest.

Merke
Validierung prüft: „Darf das so sein?“

Beispiel: „E-Mail ist nicht leer“ und „E-Mail hat ein sinnvolles Format“. Erst wenn das stimmt, solltest du speichern oder weiterrechnen.

1) Warum ist Validierung so wichtig?

  • Du vermeidest Abstürze (z.B. „nicht-numerischer Text“ bei einer Zahl).
  • Du bekommst bessere Datenqualität (weniger „Müll“ in Listen / Datenbanken).
  • Du schützt dich vor typischen Sicherheitsproblemen (kommt später genauer).
Achtung
Browser-Validierung reicht nicht

HTML kann zwar Dinge prüfen (z.B. required oder type="email"), aber das kann man umgehen. Darum muss die echte Prüfung immer auf dem Server passieren.

2) Typische Validierungs-Regeln

Meistens besteht Validierung aus mehreren Schritten:

  1. Pflichtfeld: darf nicht leer sein
  2. Format: z.B. E-Mail-Format
  3. Typ: Zahl, Text, Datum
  4. Grenzen: Mindest-/Max-Länge, Zahlenbereich
  5. Plausibilität: „macht das realistisch Sinn?“
Tipp
Fehlermeldungen sollen dem Nutzer helfen

Nicht nur „Fehler“, sondern z.B. „Bitte gib eine ganze Zahl ein“ oder „Mindestens 8 Zeichen“.

3) Mini-Demo: Validierung in PHP

Das folgende Demo-Formular prüft zwei Dinge: E-Mail (Pflicht + Format) und Alter (Pflicht + Zahl + Bereich). Es wird nichts gespeichert – es geht nur um die Validierung.

Pflichtfeld + muss wie eine E-Mail aussehen.
Pflichtfeld + ganze Zahl + plausibler Bereich.
Zurücksetzen

Was passiert im Code?

Der Ablauf ist typisch für viele Formulare: Erst liest du die Werte ein, dann prüfst du sie, und am Ende entscheidest du: Fehler anzeigen oder weiter verarbeiten.

Beispiel: Validierungs-Ablauf

$errors = [];

$email = trim($_POST['email'] ?? '');
$age   = trim($_POST['age'] ?? '');

// Pflichtfeld
if ($email === '') {
    $errors['email'] = 'Bitte gib eine E-Mail ein.';
}

// Format
if (!isset($errors['email'])) {
    if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
        $errors['email'] = 'E-Mail ist ungültig.';
    }
}

// Zahlenprüfung
if ($age === '') {
    $errors['age'] = 'Bitte gib ein Alter ein.';
} elseif (!ctype_digit($age)) {
    $errors['age'] = 'Bitte ganze Zahl eingeben.';
} else {
    $ageInt = (int)$age;
    if ($ageInt < 1 || $ageInt > 120) {
        $errors['age'] = 'Alter ist unplausibel.';
    }
}

if (empty($errors)) {
    // hier würde man speichern / weiterarbeiten
}
Tipp
Fehler als Array speichern

Das ist übersichtlich: Pro Feld ein Fehlertext. In der Ausgabe kannst du dann genau unter dem passenden Feld den Fehler anzeigen.

Wie geht es weiter?

Jetzt weißt du, wie man Eingaben prüft. Als nächstes kommt ein häufiger Stolperstein: Sanitizing vs Escaping. Das klingt ähnlich, ist aber etwas völlig anderes.

Nächster Schritt
Sanitizing vs Escaping

Was bedeutet „Input säubern“ – und warum muss man beim Ausgeben trotzdem escapen?