Не трябва да използвате htmlentities
когато го записвате. Трябва да използвате htmlentities
при показването му. Основното правило е да не кодирате/дезинфекцирате данните, докато не се наложи. Ако правите htmlentities
върху него, когато запазите, тогава трябва да направите html_entity_decode
върху текста, когато потребителят иска да редактира въведеното. Така дезинфекцирате за това, от което имате нужда и нищо повече. Когато го запазвате, трябва да дезинфекцирате за SQL инжекция, така че mysql_real_escape_string
то. Когато показвате, трябва да дезинфекцирате за XSS, така че htmlentities
го.
Също така, не съм сигурен дали сте видели коментара на Дарил Хайн, но наистина не искате да активирате magic_quotes. Те са лошо, лошо нещо и са оттеглени от PHP 5.3 и ще изчезнат напълно в PHP 6.