Когда лучше применять check_plain()?
Ну тут обычно только пару вариантов:
1) При сабмите сразу вписывать в базу очищенное значение.
2) При выводе.
Как убрать разрушение кавычек? Обычно на H1 косячит (сам h1 выводится стандартным шаблоном без вмешательств).
Версия Drupal:
7.xКатегория:
Security
Вопрос задан 09.08.2015 - 09:48
Ответы
При выводе.
Если почистите данные на сабмите, то для обработки надо конвертировать обратно:
1. показать исходный текст в поле ввода;
2. вывести текст без check_plain, для пользователя с правом на html;
и др.
Поэтому в базе храните сырые данные для удобной обработки.
Прилагаю известную и полезную табличку про функции очистки выводимого содержимого:
P.S. Про кавычки не понял вопроса.
Ответ дан 09.08.2015 - 10:50
В базе принято хранить сырые данные
Ответ дан 09.08.2015 - 11:00
У Entity есть функция вывода заголовка. Там такое:
return check_plain($entity->label)
Создаем сущность с таким заголовком -
<script>alert('1');</script>
В итоге получаем H1 и title такой -
<script>alert('1');</script>
При построении страницы template_process_page вызывает функцию drupal_get_title, которая чистит заголовок через check_plain. Поэтому ваш check_plain лишний.
Спасибо, теперь понятно.
Просто много где приходится обрабатывать вывод одного и того же(
Может быть в какую-нибудь переменную записать очищенное значение, а потом обращаться сразу к ней? Типа как safe_value у полей длинного текста.
Функцию разве что.