Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Validierung: Eingaben, Datentypen und Escaping

Wo in Exponential ohne Validator-Komponente validiert wird - Inhalte prüfen ihre Datentypen beim Speichern durch Redakteure, eigene Formulare und Parameter prüfen Sie in Ihrer View oder Ihrem Dienst, und Ausgaben werden…

Download as PDF

Address: https://doc.exponential.earth/learninminutes/exphelp/viewer/help/web-framework-developers/validation.md

On this page

This page is a translation. Read the English original

Validierung: Eingaben, Datentypen und Escaping

Diese Seite richtet sich an Entwickler, die Constraints deklarieren (Attribute des Symfony Validator, Validierungsregeln in Laravel, Formularfelder in Django, Modellvalidierungen in Rails). Exponential hat keine allgemeine Validator-Komponente mit deklarativen Regeln. Validiert wird an drei Stellen, und wer weiß, welche davon gilt, spart viel doppelten Code.

Inhalt

  1. Drei Stellen
  2. Inhalte: Die Datentypen validieren
  3. Ihre Eingaben: in der View oder im Dienst validieren
  4. Fehler anzeigen
  5. Ausgabe: dort escapen, wo Sie ausgeben
  6. Im Vergleich mit Validierungsbibliotheken

Drei Stellen

DatenValidiert durchSie schreiben
Inhalte, die in der Administrationsoberfläche oder einem Bearbeitungsformular im Frontend bearbeitet werdenden Datentyp jedes Attributs mit den Einstellungen des Klassenattributs (Pflichtfeld, Länge, Wertebereiche)nichts, oder einen eigenen Datentyp
Parameter und Formulare Ihrer eigenen ViewsIhre View oder den Dienst, den sie aufruftTypumwandlungen, Allow-Lists, Prüfungen, Fehlermeldungen
API-Eingabendie REST-Schicht für Inhalte; Ihren Controller oder Ihre Serverfunktion für alles anderedieselben Prüfungen wie für Formulare

Inhalte: Die Datentypen validieren

Wenn Inhalte über die Bearbeitungs-Views gespeichert werden, prüft der Datentyp jedes Attributs die Eingabe in validateObjectAttributeHTTPInput() (kernel/classes/ezdatatype.php) und antwortet mit einem Zustand von eZInputValidator: STATE_ACCEPTED, STATE_INTERMEDIATE oder STATE_INVALID, zusammen mit einer Meldung, die das Bearbeitungsformular neben dem Feld anzeigt. Ob ein Feld ein Pflichtfeld ist, seine Längenbegrenzungen und Wertebereiche sind Einstellungen des Klassenattributs, die im Klasseneditor gesetzt werden. Eine neue Art von Regel ist ein neuer Datentyp (Eigene Datentypen, Der Lebenszyklus eines Datentyps).

Wenn Code Inhalte mit eZContentFunctions::createAndPublishObject() anlegt, werden die Werte in der Form von fromString() des Datentyps übergeben; validieren Sie sie in Ihrem Importcode, bevor Sie die Funktion aufrufen.

Ihre Eingaben: in der View oder im Dienst validieren

Aus Eingabevalidierung und Ausgabe-Escaping:

EingabeValidieren
IDs und Zahlen(int), danach eine Bereichsprüfung (max( 1, min( 100, (int)$limit ) ))
Auswahlwerteeine Allow-List: in_array( $sort, array( 'name', 'published' ), true )
TextLängenbegrenzungen, Trimmen, die für das Feld erlaubten Zeichen
E-Mail, URLfilter_var(); bei URLs zusätzlich das Schema (nur https)
DateienTyp anhand des Inhalts und Größe, gespeichert über den Kernel
Weiterleitungszielenur Adressen der eigenen Site (Sichere Weiterleitungen)

Adressparameter ($Params) sind Zeichenketten aus der URL und genauso wenig vertrauenswürdig wie POST-Daten. Legen Sie die Regeln in eine kleine Validator-Klasse, die Ihre View, Ihr Befehl und Ihre API gemeinsam nutzen, und testen Sie sie mit PHPUnit ohne Datenbank (Testen).

$errors = array();
$title = trim( (string)$Module->actionParameter( 'Title' ) );
if ( $title === '' )
    $errors['title'] = ezpI18n::tr( 'extension/expdemo', 'Enter a title.' );
elseif ( mb_strlen( $title ) > 200 )
    $errors['title'] = ezpI18n::tr( 'extension/expdemo', 'The title is too long.' );

Fehler anzeigen

Stellen Sie das Formular mit den Werten, die der Benutzer eingegeben hat, erneut dar, zeigen Sie jeden Fehler neben seinem Feld und eine Zusammenfassung oben an, und verlinken Sie die Zusammenfassung mit den Feldern, damit Tastatur- und Screenreader-Nutzer sie finden (Formulare, CSRF-Schutz und HTTP-Eingaben):

$tpl->setVariable( 'errors', $errors );
$tpl->setVariable( 'values', array( 'title' => $title ) );

Ausgabe: dort escapen, wo Sie ausgeben

Templates escapen nicht automatisch: Jeder Wert von Benutzern oder aus der Datenbank läuft durch |wash, außer Werten, die bauartbedingt bereits sicheres HTML sind ($module_result.content, die Ausgabe von attribute_view_gui, gerenderter Rich Text) (Die View-Schicht). Verwenden Sie in PHP je nach Kontext htmlspecialchars( $v, ENT_QUOTES, 'UTF-8' ), json_encode() oder $db->escapeString().

Im Vergleich mit Validierungsbibliotheken

Funktion der BibliothekExponential
Deklarative Constraints an einem ModellEinstellungen des Klassenattributs für Inhalte; nichts für Ihre eigenen Tabellen
Validierungsgruppen, Kaskadierungnein
Übersetzte MeldungenezpI18n::tr() in Ihrem Code; Datentypen liefern übersetzte Meldungen mit
Darstellung von FormularfehlernIhr Template

Wenn Sie deklarative Regeln bevorzugen, können Sie in Ihrer Erweiterung eine Validierungsbibliothek aus Composer verwenden; der Kernel hängt von keiner ab.

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x