Datenvalidierung in PHP: Vollständiger Leitfaden mit Codebeispielen

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 professionellen Lösungen



Datenvalidierung ist einer der Grundpfeiler sicherer und stabiler Webanwendungen. PHP bietet zahlreiche integrierte Werkzeuge, um Benutzereingaben effektiv zu prüfen. In diesem Artikel behandeln wir die wichtigsten Ansätze, von einfachen Funktionen bis hin zu leistungsstarken Bibliotheken, und zeigen praktische Beispiele.



Warum ist Validierung notwendig?

Jede Anwendung, die Daten vom Benutzer entgegennimmt (Formulare, API, URL-Parameter), muss deren Korrektheit überprüfen. Dies hilft:

  • SQL-Injection und XSS-Angriffe zu verhindern
  • Die Datenintegrität in der Datenbank sicherzustellen
  • Die Benutzererfahrung zu verbessern (verständliche Fehlermeldungen)
  • Logische Fehler im Anwendungsbetrieb zu vermeiden


Integrierte Validierungsfunktionen in PHP

PHP bietet mehrere einfache, aber effektive Funktionen zur grundlegenden Datenprüfung:



1. Prüfung auf Leere: empty() und isset()

// Prüfen, ob ein Feld nicht leer ist$name = trim($_POST['name'] ?? '');if (empty($name)) {    echo "Name ist erforderlich";}

// Prüfen, ob eine Variable existiertif (!isset($_POST['email'])) { echo "E-Mail-Feld wurde nicht übermittelt";}


2. Filter: filter_var()

Dies ist wohl der bequemste integrierte Mechanismus zur Validierung gängiger Datentypen:

$email = "user@example.com";if (filter_var($email, FILTER_VALIDATE_EMAIL)) {    echo "E-Mail ist gültig";} else {    echo "Ungültiges E-Mail-Format";}

// Weitere nützliche Filter:$url = "https://pythonlib.ru";if (filter_var($url, FILTER_VALIDATE_URL)) { echo "URL ist gültig";}

$ip = "192.168.1.1";if (filter_var($ip, FILTER_VALIDATE_IP)) { echo "IP-Adresse ist gültig";}

// Filter für ganze Zahlen$age = 25;if (filter_var($age, FILTER_VALIDATE_INT, ["options" => ["min_range" => 1, "max_range" => 120]])) { echo "Alter ist gültig";}


Reguläre Ausdrücke für komplexe Validierung

Wenn die Standardfilter nicht ausreichen, helfen reguläre Ausdrücke weiter. Die Funktion preg_match() ermöglicht die Prüfung von Daten nach jedem beliebigen Muster:

// Telefonnummer prüfen (russisches Format)$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";}

// Passwort prüfen (mindestens 8 Zeichen, mindestens eine Ziffer und ein Buchstabe)$password = "MyPass123";$pattern = '/^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{8,}$/';if (preg_match($pattern, $password)) { echo "Passwort ist sicher";} else { echo "Passwort entspricht nicht den Anforderungen";}


Validierungsbibliotheken: Wenn das Projekt komplexer wird

Für größere Projekte (Frameworks, CMS) wird die manuelle Validierung umständlich. Hier helfen spezialisierte Bibliotheken. Betrachten wir zwei der beliebtesten:



1. Symfony Validator

Teil des Symfony-Ökosystems, kann aber auch separat verwendet werden. Ermöglicht die Beschreibung von Validierungsregeln über Annotationen oder YAML/XML:

use Symfony\\Component\\Validator\\Validation;use Symfony\\Component\\Validator\\Constraints as Assert;

class User { /** * @Assert\\NotBlank(message="Name darf nicht leer sein") * @Assert\\Length(min=2, max=50) */ public $name; /** * @Assert\\Email(message="Ungültiges E-Mail-Format") */ public $email;}

// Verwendung$validator = Validation::createValidatorBuilder() ->enableAnnotationMapping() ->getValidator();

$user = new User();$user->name = "A";$user->email = "invalid-email";

$errors = $validator->validate($user);if (count($errors) > 0) { foreach ($errors as $error) { echo $error->getMessage() . "<br>"; }}

Empfehlungen