Редактирование экранированного кода (для отображения) - PullRequest
0 голосов
/ 24 октября 2008

Если я экранирую некоторый код, потому что я хочу, чтобы он отображался как фактический код в html (например, для примера фрагмента кода), сохраните его в базе данных и затем перетащите его обратно в редактор (html-страницу), это отображается как HTML, в отличие от экранированного текста.

Моя проблема возникает, когда я включаю тег texttarea в текст, потому что он преждевременно закроет область редактирования и отрежет остальную часть того, что я пишу, когда она сохранена (или больше, если я не закрываю тег).

Итак, мой вопрос: это предполагаемое поведение со стороны браузера? -> Так что мне нужно экранировать текст (возможно, код и предварительные теги)? каждый раз, когда я хочу внести в него изменения? Или я что-то не так делаю?

* Обратите внимание, что я единственный человек, использующий это, и это в основном только для обучения, поэтому я не беспокоюсь о аспекте безопасности, а о том, как проверять мне нужно обрабатывать мой HTML при использовании его в браузере и иметь он ведет себя ожидаемым образом.

Ответы [ 4 ]

1 голос
/ 24 октября 2008

@ Боб: htmlentities () - это не то же самое, что htmlspecialchars ()

htmlentities () преобразует каждый символ, имеющий код ASCII, в этот код. htmlspecialchars () будет делать только те, которые являются особыми в HTML, такие как &, кавычки и <или>

Это довольно существенное различие, которое может сломать некоторые вещи, а также может привести к огромному результату при использовании htmlentities ().

1 голос
/ 24 октября 2008

По моему опыту, вам нужно сделать какой-то особый экранирующий символ. В PHP функция это htmlspecialchars (). Я не знаю о других функциях. Но в окне обзора будут правильно отображаться закодированные символы в текстовой области.

0 голосов
/ 24 октября 2008

Это предполагаемое поведение со стороны браузера? Да, браузер интерпретирует ваш (неэкранированный) HTML-код как HTML-теги, принадлежащие странице, и воздействует на них.

Так что мне нужно экранировать текст (возможно, код и предварительные теги)? Да, как сказал Дэррил Хейн, используйте htmlspecialchars (). Они будут корректно отображаться браузером, и вам не нужно «удалять» данные, когда они возвращаются после редактирования.

... я что-то не так делаю? Вы должны проверить любые входные данные, поступающие в ваше приложение или покидающие его, и посмотреть, есть ли в нем какие-либо символы, которые имеют особое значение для браузера, для сервера базы данных и для других частей вашего решения. Вы должны правильно экранировать специальные символы для каждого взаимодействия (например, mysql_escape_string () для базы данных MySQL, htmlspecialchars () для HTML и т. Д.)

0 голосов
/ 24 октября 2008

Большинство веб-языков имеют некоторые библиотечные функции для экранирования символов, интерпретируемых HTML, поэтому проверьте документацию для используемого вами языка.

Как сказал Дэррил, html_entities () (псевдоним htmlspecialchars ()) поможет PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...