Halten Sie den Text zunächst logisch und sauber:
trim() -- OK
htmlentities($comment, ENT_NOQUOTES) -- No; do later
mysqli_real_escape_string() -- Yes; required by API
nl2br() -- No; see below
Die Logik hinter diesen Empfehlungen:Die Daten in der Datenbank sollten nur einfache Daten sein. Keine htmlentities, keine br-tags. Aber Sie müssen den escape_string ausführen, um Daten von PHP an MySQL zu übergeben; die Fluchten werden nicht gespeichert.
Aber... Das ist nur der mittlere Schritt. Woher kamen die Daten? Ältere Versionen von PHP versuchen, Sie zu "schützen", indem Sie Escapes und anderen Müll hinzufügen, der für HTML OK funktioniert, aber MySQL vermasselt. Deaktivieren Sie solche magischen Fluchten und erhalten Sie die Rohdaten.
Wohin gehen die Daten? Wahrscheinlich HTML? Nach SELECTing
die Daten wieder aus der Tabelle, dann Führen Sie zuerst htmlentities()
aus und (optional) nl2br()
;
Beachten Sie, wenn Sie erwarten, Dinge wie <I>
beizubehalten (für kursiv), Sie bitten um Ärger – großen Ärger. Alles, was ein Hacker tun muss, ist <script> ...
allerlei Gemeinheiten in Ihre Webseite und möglicherweise Ihr gesamtes System zu injizieren.