Achte darauf, dass $_SERVER['PHP_SELF'] durch Anhängen eines Querystrings mit allem möglichen gefüllt sein kann. Deshalb muss auch dieser Wert mit htmlspecialchars() behandelt werden. Oder aber, man nimmt action="", das steht ebenfalls für die aktuelle URL, ist einfacher zu notieren und nicht für Injections anfällig.
Danke für den Hinweis. Werde ich berücksichtigen.
Du hast meine Vermutung nicht bestätigt/widerlegt. htmlentities() hat einen Parameter zum Angeben der Kodierung (der dritte namens charset) Wenn du den nicht auf #utf-8' stellst, aber UTF-8-kodierte Daten übergibst, dann wird jedes einzelne Byte von UTF-8-Byte-Sequenzen in eine NCR gewandelt. Das müsste auch sehr schön in der Quelltextansicht des Browsers zu sehen sein. Im Text sieht man dann beispielsweise zwei verkorkste Zeichen statt eines Umlauts.
Klingt in etwa wie das, was ich zu sehen bekam. Ich werde es morgen mal probieren und Feedback posten. Gibt es denn eine Notwendigkeit oder Vorteile htmlentities() zu verwenden im Gegensatz zum "plain" htmlspecialchars() da ja sonst alles zu gehen scheint momentan?
Liebe Grüße
Sam