Tach!
… Zudem verhindert solch frühzeitiges Maskieren, dass die Daten noch anderweitig verarbeitet werden können. Bei Validierungen, die zwei oder mehr Felder umfassen ist sowas zum Beispiel sehr ungünstig. Die Validierung findet üblicherweise erst nach der Prüfung auf Inhalt statt.
Ich kann mir für den Fall des Lesens eines Datensatzes zur Ausgabe in einem Formular zwar keinen Fall einer nötigen Validierung vorstellen, aber sei's drum.
Create mit leeren Feldern und Edit eines Datensatzes aus dem DBMS sind nur zwei Fälle für das Formular. Wiedervorlage der eben getätigten Eingaben (egal ob bei Create oder Edit) im Falle eines Eingabefehlers ist ein weiterer Fall, für den das Formular gerendert werden muss.
Eine Validierung erwarte ich bei der Überprüfung einer Eingabe, also nach dem absenden eines wie auch immer ausgefüllten Formulars.
Genau. Dann ist die Datenquelle nicht das DBMS sondern $_POST/$_GET. Damit hast du neben den Create_leer- und Edit_DBMS-Fällen noch eine weitere Stelle, wo du htmlspecialchars()-Aufrufe unterbringen musst, bevor du die Daten dem Formular zuführst.
Mein Beispielcode ist zudem auch kein vollständiges Beispiel. Eine eventuell dennoch nötige Validierung könnte auch zwischen dem Auslesen des Datensatzes aus der Datenbank und dem Befüllen des Arrays mit den möglichen Werten der name-Attribute stattgefunden haben, also in einem Codeabschnitt, der nicht Teil des Beispiels ist.
Dann wäre die htmlspecialchars()-Einfügung sozusagen zwischen Datenbeschaffung/-validierung und Formularausgabe. Also ein zusätzlicher Schritt, der wegfallen kann, wenn man es gleich bei der Ausgabe unterbringt.
dedlfix.