Hi!
In welchem Kontext? HTML? Dann sind nur die HTML-eigenen Zeichen (<>& und teilweise "') zu beachten. Anderer Kontext -> andere Zeichen.
Ja, der Ausgabe String wird später (nach weiteren Verarbveitungen) durch echo als HTML ausgegeben.
Dann reicht htmlspecialchars(). Wenn noch weitere Verarbeitungen erfolgen, ist es aber noch kein Ausgabestring. Für die Verarbeitung ist es eher hinderlich, wenn bereits Escape-Sequenzen für irgendein Ausgabemedium enthalten sind. Die Aufbereitung für die Ausgabe solltest du erst dann vornehmen, wenn die Ausgabe erstellt wird.
Das Ziel ist hier ein Gästebuch zu schreiben, und da möchte ich eben keine Programmiersprachen (HTML, JS, CSS, ...) zulassen.
Wenn du die HTML-eigenen Zeichen beachtest, kann man da so viel Code eingeben, wie man will, mit htmlspecialchars() landet er nur als Daten in der Ausgabe. Kein Problem. Wenn jemand Code eingibt, ist das nicht weiter tragisch, denn er wird vom Browser nicht ausgeführt, nur angezeigt. Und egal, welche Maßnahmen du ergreifst, um unerwünschte Einträge fernzuhalten, es findet sich immer wieder ein Text, den du nicht veröffentlicht sehen willst. Also spar dir die technische Mühe jenseits von htmlspecialchars(), den Inhalt musst du sowieso regelmäßig kontrollieren.
Die Ausgabeseite ist UTF-8 codiert, wie auch das Datenbankfeld, in dem der Text gespeichert wird, also ist es eigentlich nicht nötig die Umlaute zu ersetzen.
Richtig. Die Verbindung zu (angenommenerweise) MySQL ist auch auf UTF-8 eingestellt?
Lo!