Nie powinieneś używać htmlentities
podczas zapisywania. Powinieneś użyć htmlentities
podczas wyświetlania. Zasadą jest, aby nie kodować/czyścić danych, dopóki nie zajdzie taka potrzeba. Jeśli wykonasz htmlentities
na nim, gdy zapisujesz, musisz zrobić html_entity_decode
na tekście, gdy użytkownik chce edytować dane wejściowe. Więc odkażasz to, czego potrzebujesz i nic więcej. Zapisując go, musisz oczyścić przed wstrzyknięciem SQL, więc mysql_real_escape_string
to. Podczas wyświetlania musisz oczyścić je pod kątem XSS, więc htmlentities
to.
Nie jestem też pewien, czy widziałeś komentarz Darryla Heina, ale naprawdę nie chcesz, aby funkcja magic_quotes była włączona. Są złe, złe i zostały przestarzałe w PHP 5.3 i znikną całkowicie w PHP 6.