Datenvalidierung in PHP: Leitfaden und Werkzeuge

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Datenvalidierung in PHP: Von einfachen Prüfungen bis zu fertigen Bibliotheken



Datenvalidierung ist einer der Schlüsselaspekte für die sichere und stabile Funktionsweise jeder Webanwendung in PHP. Ob es sich um ein Registrierungsformular, einen Kommentar, einen Dateiupload oder eine API-Anfrage handelt – alle vom Benutzer eingehenden Daten müssen vor der Verarbeitung sorgfältig geprüft werden. In diesem Artikel betrachten wir die grundlegenden Ansätze zur Validierung in PHP: von integrierten Funktionen bis hin zu leistungsstarken fertigen Bibliotheken. Das Material ist sowohl für Anfänger als auch für erfahrene Entwickler nützlich, die ihr Wissen strukturieren möchten.



Warum ist Validierung notwendig?

Falsche oder schädliche Daten können zu Folgendem führen:

  • SQL-Injection und XSS-Angriffen;
  • Fehlern in der Anwendungslogik;
  • Datenverlust oder -beschädigung;
  • negativer Benutzererfahrung.

Eine korrekte Validierung löst diese Probleme und gewährleistet die Integrität und Sicherheit des Systems.



Integrierte Validierungsmöglichkeiten in PHP

PHP bietet mehrere integrierte Mechanismen zur Datenprüfung. Betrachten wir die wichtigsten.



1. Funktionen zur Typ- und Werteprüfung

Die einfachste Methode ist die Verwendung von Funktionen wie is_numeric(), is_string(), empty(), strlen() und anderen. Sie eignen sich für schnelle Prüfungen, reichen aber für komplexe Szenarien nicht aus.



2. Filter (Filter Functions)

Seit PHP 5.2 ist eine Reihe von Funktionen zur Filterung und Validierung verfügbar: filter_var() und filter_input(). Sie ermöglichen die Prüfung von E-Mail, URL, IP-Adressen, ganzen Zahlen und vielem mehr.

<?php$email = "user@example.com";if (filter_var($email, FILTER_VALIDATE_EMAIL)) {    echo "E-Mail ist gültig.";} else {    echo "E-Mail ist ungültig.";}

$age = 25;if (filter_var($age, FILTER_VALIDATE_INT, ["options" => ["min_range" => 1, "max_range" => 120]])) { echo "Alter ist gültig.";}?>


3. Reguläre Ausdrücke (PCRE)

Für flexible String-Validierung (z. B. Telefonnummer, Postleitzahl, Passwort) eignet sich preg_match().

<?php$phone = "+7 (999) 123-45-67";$pattern = '/^\\+7\\s?\\(\\d{3}\\)\\s?\\d{3}-\\d{2}-\\d{2}$/';if (preg_match($pattern, $phone)) {    echo "Telefonnummer ist gültig.";} else {    echo "Ungültiges Telefonformat.";}?>


Fertige Bibliotheken für die Validierung in PHP

Wenn ein Projekt wächst, wird es ineffizient, eine eigene Validierung von Grund auf zu schreiben. Hier helfen spezialisierte Bibliotheken. Betrachten wir die beiden beliebtesten.



Respect\\Validation

Eine der benutzerfreundlichsten und ausdrucksstärksten Bibliotheken. Ermöglicht die Erstellung von Regelketten im "Fluent Interface"-Stil.



Installation:

composer require respect/validation


Anwendungsbeispiel:

<?phpuse Respect\\Validation\\Validator as v;

$userData = [ 'name' => 'Ivan', 'email' => 'ivan@example.com', 'age' => 30, 'password' => 'qwerty123'];

$validator = v::key('name', v::stringType()->length(2, 50)) ->key('email', v::email()) ->key('age', v::intType()->between(18, 100)) ->key('password', v::stringType()->length(8, 64));

try { $validator->assert($userData); echo "Alle Daten sind gültig!";} catch (\\Respect\\Validation\\Exceptions\\NestedValidationException $e) { print_r($e->getMessages());}?>


Die Bibliothek unterstützt Dutzende von Regeln: date(), cpf() (für brasilianische CPF), creditCard(), url() und andere. Darüber hinaus können eigene Regeln erstellt werden.



Symfony Validator

Eine leistungsstarke Komponente aus dem Symfony-Ökosystem, die auch ohne das Framework verwendet werden kann. Basiert auf Annotationen (oder YAML/XML) und unterstützt komplexe Szenarien, einschließlich

Empfehlungen