htmlspecialchars преобразует <в & gt;

Я строю небольшой форум и получил эту проблему, когда я оставляю комментарий к нему. Который имеет < внутри него htmlspecialchars преобразует его в &gt;, ссылка на форум (это датский, но вы должны иметь возможность использовать его).

1 ответ

Решение

Если вы хотите разрешить использование специальных символов в комментариях (что, на мой взгляд, является правильным для общего поля, такого как "Комментарии"), то вам следует беспокоиться только о специальных символах, когда содержимое поля записывается в некоторые потенциально "опасный" контекст: код SQL, HTML, JavaScript или даже файлы журналов. Каждый из этих контекстов имеет свои опасности, поэтому "цитирование" варьируется от одного к другому.

Если вы применяете фильтрацию специальных символов для HTML, когда хотите показать комментарии пользователю, то это преобразование "<" в &gt; это именно то, что вы хотите. Когда браузер анализирует текст комментария как часть вашей HTML-страницы, &gt; будет преобразован в символ "<" на экране.

Если вы выполните преобразование при чтении комментария и при его написании, вы получите ошибку двойного кодирования: символ "&" в &gt; само превратится в &amp;, Поэтому браузер увидит строку &amp;gt; что заставит его показать &gt; на экране вместо.

Другие вопросы по тегам