Първо, поддържайте текста логичен и чист:
trim() -- OK
htmlentities($comment, ENT_NOQUOTES) -- No; do later
mysqli_real_escape_string() -- Yes; required by API
nl2br() -- No; see below
Логиката зад тези препоръки:Данните в базата данни трябва да са просто обикновени данни. Не htmlentities, не br-tags. Но трябва да направите escape_string, за да предадете данни от PHP към MySQL; изходите няма да бъдат съхранени.
Но... Това е само средната стъпка. Откъде дойдоха данните? По-старите версии на PHP се опитват да "защитят" добавянето на escapes и други боклуци, които работят добре за HTML, но прецакват MySQL. Изключете такова магическо бягство и вземете необработените данни.
Къде отиват данните? Вероятно HTML? След SELECTing
данните обратно от таблицата, след това първо направете htmlentities()
и (по избор) nl2br()
;
Обърнете внимание, ако очаквате да запазите неща като <I>
(за курсив), вие искате неприятности - големи проблеми. Всичко, което хакерът трябва да направи, е <script> ...
за да инжектирате всякакви гадости във вашата уеб страница и евентуално в цялата ви система.