Пользователь вводит текст в текстовое поле. Затем он вставляется непосредственно в базу данных mySQL. Я использую trim, htmlentities, mysql_real_escape_string, и у меня есть магические кавычки. Как я должен дезинформировать его при возвращении этих данных в текстовое поле?
Спасибо за вашу помощь. Я никогда не был слишком уверен в правильном способе этого делать …
Вы не должны использовать htmlentities при его сохранении. При отображении следует использовать htmlentities . Эмпирическое правило заключается не в том, чтобы кодировать / дезинформировать данные до тех пор, пока вам не понадобится. Если вы делаете htmlentities на нем при сохранении, вам нужно сделать html_entity_decode в тексте, когда пользователь хочет отредактировать вход. Поэтому вы санируете за то, что вам нужно, и больше ничего. При его сохранении вам необходимо дезинформировать SQL-инъекцию, так что вы mysql_real_escape_string . При отображении вам нужно санировать XSS, так что вы htmlentities его.
Кроме того, я не уверен, что вы видели комментарий Даррила Хейна, но вы действительно не хотите, чтобы magic_quotes были включены. Они плохое, плохое, и они устарели от PHP 5.3 и полностью исчезнут в PHP 6.
В дополнение к ответу Паоло о том, когда использовать htmlentities() , если вы не используете старую версию PHP, правильный способ дезинфекции для вставки в базу данных mysql состоит в том, чтобы использовать подготовленные выражения, которые являются частью расширения mysqli . Это заменяет любую необходимость использования mysql_real_escape_string() .
Кроме этого, я думаю, что у вас есть вещи.