Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
20 / 20 / 7
Регистрация: 18.02.2015
Сообщений: 304

Экранирование спецсимволов с помощью htmlspecialchars

15.11.2016, 11:24. Показов 3164. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток.
Я что-то не до конца вдупляю как работает экранирование.

Закодировал все с помощью htmlspecialchars, далее вытаскиваю через echo, все показывает нормально.

Сую в HTML Разметку и вижу примерно такое: 57th & 9th

Если я юзаю htmlspecialchars_decode - работает и все экранирует (В разметке уже).

Но если я открываю тестовый скрипт и пишу echo htmlspecialchars_decode, то он в случае в <script>, выполняет скрипт.

Суть в том, что я боюсь если что-то забагуется в HTML разметки и htmlspecialchars_decode выведет мне рабочий <script> будет плохо
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.11.2016, 11:24
Ответы с готовыми решениями:

экранирование спецсимволов
есть ли гем, который экранирует спецсимволы в строке, для того, чтобы внести ее в бд sqlite? Добавлено через 1 минуту и второй...

Экранирование спецсимволов
Здравствуйте. Подскажите как заставить работать этот код.Не могу правильно заэкранировать. Файл php echo &quot;&lt;script&gt;$('...

Экранирование спецсимволов в регулярные выражение
Здравствуйте, мне необходимо экранировать спецсимволы (\\\\/\^\$\.\|\?\*\+\(\)\{\}) в ведённой строке, т.к. она далее проверяется на некий...

7
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
15.11.2016, 12:15
Это не экранирование, а кодирование. Экранирование – это «отсвечивание» бэкслешем или дублирование.

В браузере фактический код 57th &amp; 9th будет отображать, как 57th & 9th. Соответственно перед выводом в браузер или еще раньше вы должны закодировать текст, если подозреваете наличие в нем спецсимволов, которые должны быть показаны в браузере, как обычный текст.
1
20 / 20 / 7
Регистрация: 18.02.2015
Сообщений: 304
15.11.2016, 12:23  [ТС]
Окей, не совсем точно подобрал слово. Суть лежит в том, чтобы <script> выводился понятным для человека "языком", но при этом он не выполнялся.

Добавлено через 6 минут
В чем проблема, он в обычном echo отображает (В тестовом пустом файле). А когда я юзаю уже в шаблонах все это дело - тут он не работает. Он выводит все так же &amp;, а вот если напишу htmlspecialchars_decode, он выведет мне &, при этом даже <script> не будет работать, а выведет как текст. И я не понимаю, почему?
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
15.11.2016, 12:36
Вы не кодируйте все подряд. JS-код кодировать не нужно. Нужно кодировать только текст, который должен отображаться в браузере, как обычный текст.

Добавлено через 3 минуты
Цитата Сообщение от Appi Посмотреть сообщение
В чем проблема, он в обычном echo отображает (В тестовом пустом файле).
Посмотрите в исходник – там все равно будет &amp;
1
20 / 20 / 7
Регистрация: 18.02.2015
Сообщений: 304
15.11.2016, 12:52  [ТС]
Да, я не кодирую все подряд, как раз таки текст храниться в БД, и если хитрожопый пользователь решит заюзать <script> то чтобы система этот скрипт заэкранила. А не выполнила. В БД все правильно храниться, при выводе надо чтобы нормально отображалось без использования функции htmlspecialchars_decode (Если я правильно понял, она декодирует и скрипт будет выполняться). В моем магическом случае скрипт не выполняется, а приходит в читабельный вид, вместо &lt; и прочего (В результате уже, а не БД или где-то еще). Если я не юзаю, в результате при выводе выводит все равно &lt;
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
15.11.2016, 12:59
Вы уж определитесь, что вам нужно:
Цитата Сообщение от Appi Посмотреть сообщение
если хитрожопый пользователь решит заюзать <script> то чтобы система этот скрипт заэкранила
Цитата Сообщение от Appi Посмотреть сообщение
В моем магическом случае скрипт не выполняется, а приходит в читабельный вид
Про decode забудьте пока. Изначально поступающий от пользователя текст кодируйте, но не декодируйте. Со своим JS-скриптом вообще ничего не делайте.
1
20 / 20 / 7
Регистрация: 18.02.2015
Сообщений: 304
15.11.2016, 13:07  [ТС]
Да нет, я понимаю что мне нужно. Я понимаю что мне НЕ нужно декодировать. Если я не Декодирую, то у меня весь текст на странице превращается в такой вид: &lt;

Если я декодирую, он становиться в читабельном виде и скрипт не выполняется. Но по логике вещей он должен выполниться, а если не декодировать по логике вещей он должен быть в читабельном виде, а не закодированом
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
15.11.2016, 13:22
Лучший ответ Сообщение было отмечено Appi как решение

Решение

Цитата Сообщение от Appi Посмотреть сообщение
Да нет, я понимаю что мне нужно. Я понимаю что мне НЕ нужно декодировать. Если я не Декодирую, то у меня весь текст на странице превращается в такой вид: &lt;
Это фактический вид (в исходниках). При показе страницы браузер будет заменять эти коды на нужные символы. Если же вы видите прямо на странице &lt; , значит в исходниках у вас &amp;lt; – это может быть, например, результат того, что у пользователя к форме подключен редактор, самостоятельно кодирующий спец символы, а вы потом на это кодирование накатываете еще свое. Отключите у пользователя этот редактор или настройте на использование BB-кодов, если есть такая возможность.

Добавлено через 1 минуту
Отключать кодирование «у себя» небезопасно!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.11.2016, 13:22
Помогаю со студенческими работами здесь

Экранирование спецсимволов при вводе в textarea
У меня есть поле для ввода текста &lt;textarea id=&quot;message&quot; maxlength=&quot;500&quot;&gt;&lt;/textarea&gt; после ввода этот текст отправляется на сервер, и...

htmlspecialchars
есть вот такое вот слово ( Côte d’Ivoire ) для того чтобы не выводились каракули если что я использую $word=&quot;Côte...

htmlspecialchars
htmlspecialchars - Преобразует специальные символы в HTML сущности , но так же и преобразовывает такие теги как &lt;b&gt; &lt;i&gt; и т д...

Htmlspecialchars
Здравствуйте уважаемые знатоки. Так как мои знания в php - базовые, я хочу понять где использовать функцию htmlspecialchars. Вот код...

Работа с htmlspecialchars
Проблема в следующем, подключаюсь к базе данных, получаю от туда массив myrow_photo. $myrow_photo //здесь все нормально, в элементе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru