Techniken zur Eingabevalidierung
Prüfen Sie Pflichtfelder, Datentypen und Längen vor der Verarbeitung.
Techniken zur Eingabevalidierung ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum Eingaben validieren?
Vertrauen Sie niemals Daten von Benutzern. Durch die Validierung wird sichergestellt, dass die Daten vor ihrer Verarbeitung Ihren Anforderungen entsprechen. Sie verhindert:
- Datenbankfehler durch falsche Datentypen
- Fehler in der Geschäftslogik durch unerwartete Werte
- Sicherheitslücken durch schädliche Eingaben
Prüfung von Pflichtfeldern
Prüfen Sie, dass Pflichtfelder nach dem Entfernen von Leerzeichen nicht leer sind:
<?php
$errors = [];
$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');
if (empty($name)) {
$errors['name'] = 'Name is required';
}
if (empty($email)) {
$errors['email'] = 'Email is required';
}
if (!empty($errors)) {
// show errors
}Typvalidierung
Validieren Sie Werte, bevor Sie sie verwenden, auf den erwarteten Datentyp:
<?php
$age = $_POST['age'] ?? '';
// Method 1: filter_var
$validAge = filter_var($age, FILTER_VALIDATE_INT, [
'options' => ['min_range' => 1, 'max_range' => 120]
]);
if ($validAge === false) {
$errors[] = 'Age must be a number between 1 and 120';
}E-Mail-Validierung
Validieren Sie E-Mail-Adressen mit dem Filter FILTER_VALIDATE_EMAIL:
<?php
$email = trim($_POST['email'] ?? '');
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = 'Invalid email address';
}
// Also check domain has MX record for extra validation
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
[$user, $domain] = explode('@', $email);
if (!checkdnsrr($domain, 'MX')) {
$errors[] = 'Email domain not found';
}
}Validierung der Zeichenfolgenlänge
Erzwingen Sie minimale und maximale Zeichenfolgenlängen:
<?php
$username = trim($_POST['username'] ?? '');
$len = mb_strlen($username);
if ($len < 3) {
$errors[] = 'Username must be at least 3 characters';
}
if ($len > 30) {
$errors[] = 'Username must be at most 30 characters';
}Whitelist-Validierung
Validieren Sie Werte anhand einer erlaubten Wertemenge (Whitelist), statt zu versuchen, ungültige Werte zu blockieren:
<?php
$allowedRoles = ['admin', 'editor', 'viewer'];
$allowedSorts = ['name', 'date', 'price'];
$role = $_POST['role'] ?? '';
$sort = $_GET['sort'] ?? 'name';
if (!in_array($role, $allowedRoles, true)) {
$errors[] = 'Invalid role selected';
}
// Default to 'name' if sort value invalid
if (!in_array($sort, $allowedSorts, true)) {
$sort = 'name';
}URL- und IP-Validierung
Validieren Sie URLs und IP-Adressen mit integrierten Filtern:
<?php
$url = $_POST['website'] ?? '';
$ip = $_POST['ip'] ?? '';
if (!filter_var($url, FILTER_VALIDATE_URL)) {
$errors[] = 'Invalid URL';
}
if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
$errors[] = 'Invalid IPv4 address';
}Muster-Validierung mit regulären Ausdrücken
Verwenden Sie preg_match() für die Validierung benutzerdefinierter Formate:
<?php
$phone = preg_replace('/[^0-9+]/', '', $_POST['phone'] ?? '');
// Validate format: +1234567890
if (!preg_match('/^\+?[0-9]{7,15}$/', $phone)) {
$errors[] = 'Invalid phone number';
}
// Validate date format YYYY-MM-DD
$date = $_POST['date'] ?? '';
if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $date)) {
$errors[] = 'Date must be in YYYY-MM-DD format';
}Datumsvalidierung
Validieren Sie, dass eine Zeichenfolge ein gültiges Kalenderdatum darstellt:
<?php
function isValidDate(string $date, string $format = 'Y-m-d'): bool {
$d = DateTime::createFromFormat($format, $date);
return $d && $d->format($format) === $date;
}
var_dump(isValidDate('2024-02-29')); // true (2024 is leap year)
var_dump(isValidDate('2023-02-29')); // false (not a leap year)
var_dump(isValidDate('2024-13-01')); // false (no month 13)Validierung von Datei-Uploads
Validieren Sie hochgeladene Dateien anhand von Typ, Größe und Fehlercode:
<?php
$file = $_FILES['photo'] ?? null;
if ($file) {
if ($file['error'] !== UPLOAD_ERR_OK) {
$errors[] = 'Upload failed with error: ' . $file['error'];
} elseif ($file['size'] > 2 * 1024 * 1024) {
$errors[] = 'File exceeds 2MB limit';
} elseif (!in_array(mime_content_type($file['tmp_name']), ['image/jpeg', 'image/png'])) {
$errors[] = 'Only JPEG and PNG files allowed';
}
}Validierungsfehler anzeigen
Zeigen Sie Fehler direkt neben den Formularfeldern an und behalten Sie die vom Benutzer eingegebenen Werte bei:
<?php
// Preserve entered values:
$name = htmlspecialchars($_POST['name'] ?? '');
?>
<form method="POST">
<input name="name" value="<?= $name ?>">
<?php if (isset($errors['name'])): ?>
<p class="error"><?= htmlspecialchars($errors['name']) ?></p>
<?php endif; ?>
<button type="submit">Submit</button>
</form>Schnelltest
Was versteht man bei der Validierung unter einem Whitelist-Ansatz?
Zusammenfassung: Eingabevalidierung
Best Practices für die Validierung:
- Pflichtfelder nach trim() prüfen
filter_var()für die Validierung von Typ und Format verwenden- Erlaubte Werte mit
in_array()auf eine Whitelist setzen preg_match()für benutzerdefinierte Muster verwenden- Datei-Uploads validieren: Fehlercode, Größe und MIME-Typ
- Benutzereingaben beibehalten, wenn Formulare mit Fehlern erneut angezeigt werden
Lerne PHP mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 49
- Lektionen
- 195
Häufig gestellte Fragen
Ist die Lektion „Techniken zur Eingabevalidierung“ kostenlos?
Ja — der vollständige Text von „Techniken zur Eingabevalidierung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Techniken zur Eingabevalidierung“?
Prüfen Sie Pflichtfelder, Datentypen und Längen vor der Verarbeitung. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um PHP Academy zu starten?
Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Techniken zur Eingabevalidierung“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?
Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- GET vs. POST: Wann Sie welche Methode verwenden
- Formulardaten mit Superglobals auslesen
- Techniken zur Eingabevalidierung
- Benutzereingaben bereinigen