HTML декодирование в текстовой области - PullRequest
2 голосов
/ 27 марта 2012

У меня проблемы с инструментом администрирования сайта, который я создал. Он позволяет мне редактировать статьи для моего сайта. Я использую google-code-prettify, так как мои статьи посвящены программированию на C ++, затем я использую теги <pre class="prettyprint"> </pre>, чтобы указать, что я собираюсь начать писать код на C ++. Проблема в том, что когда я пишу, скажем,

#include <iostream>

И затем вставьте это в мою базу данных MySQL, он правильно добавит вставить текст с <> но когда я запрашиваю информацию и отображаю ее на странице просмотра статьи. Это сломает страницу, так как HTML думает, что я пытаюсь добавить тег HTML. Таким образом, при использовании тегов &lt; &gt; он будет правильно добавлен в мою базу данных, и страница просмотра статьи будет правильно читать

#include <iostream>

Но если я захочу отредактировать статью, она будет читать &lt;&gt; как <>. Который на другой вставке вернет меня к первоначальной проблеме вставки <> в базу данных и отсутствия их в моем средстве просмотра. Как я могу помешать HTML изменить &lt;&gt; на <>, но только если он находится внутри <pre class"prettyprint"></pre> в моей текстовой области. У меня это работает, где он будет конвертировать все в текстовой области, используя jquery.

$("#contbox").each(
  function () {
    $(this).text($(this).html()).html();
 }
);

Где #contbox - это идентификатор моей текстовой области, однако я не могу понять, как ограничить это только пред тегами,

Заранее спасибо

1 Ответ

1 голос
/ 27 марта 2012

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

Вам необходимо вызватьсоответствующая кодировка на стороне сервера.Это предотвратит выполнение вредоносного кода до того, как ваш javascript сможет выполнить и кодировать данные, а также означает, что ваш пользователь все равно увидит действительный текст, если у него отключен javascript.

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