Håll först texten logisk och ren:
trim() -- OK
htmlentities($comment, ENT_NOQUOTES) -- No; do later
mysqli_real_escape_string() -- Yes; required by API
nl2br() -- No; see below
Logiken bakom dessa rekommendationer:Datan i databasen bör bara vara vanlig data. Inte html-entities, inte br-taggar. Men du måste göra escape_string för att skicka data från PHP till MySQL; utrymningarna kommer inte att lagras.
Men... Det är bara mittsteget. Var kom uppgifterna ifrån? Äldre versioner av PHP försöker "skydda" att du lägger till escapes och annat skräp som fungerar OK för HTML, men som förstör MySQL. Stäng av sådan magisk flykt och hämta rådata.
Vart går uppgifterna till? Förmodligen HTML? Efter SELECTing
data backar ut ur tabellen, då gör först htmlentities()
och (valfritt) nl2br()
;
Observera, om du förväntar dig att bevara saker som <I>
(för kursiv stil), du ber om problem -- stora problem. Allt en hackare behöver göra är <script> ...
att injicera alla typer av elakheter i din webbsida och möjligen hela ditt system.