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.