Po pierwsze, tekst powinien być logiczny i czysty:
trim() -- OK
htmlentities($comment, ENT_NOQUOTES) -- No; do later
mysqli_real_escape_string() -- Yes; required by API
nl2br() -- No; see below
Logika stojąca za tymi zaleceniami:Dane w bazie danych powinny być zwykłymi danymi. Nie elementy html, nie tagi br. Ale musisz wykonać ciąg znaków escape, aby przekazać dane z PHP do MySQL; ucieczki nie zostaną zapisane.
Ale... To tylko środkowy krok. Skąd pochodzą dane? Starsze wersje PHP starają się "chronić" dodawane kody ucieczki i inne śmieci, które działają dobrze dla HTML, ale psują MySQL. Wyłącz taką magiczną ucieczkę i uzyskaj surowe dane.
Dokąd trafiają dane? Prawdopodobnie HTML? Po SELECTing dane z powrotem z tabeli, następnie najpierw wykonaj htmlentities() i (opcjonalnie) nl2br();
Uwaga, jeśli spodziewasz się zachować takie rzeczy jak <I> (kursywą) prosisz o kłopoty – duże kłopoty. Wszystko, co musi zrobić haker, to <script> ... aby wstrzyknąć wszelkiego rodzaju złośliwości na twoją stronę internetową i prawdopodobnie na cały system.