Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > пример использование HTML Purifier


Автор: animegirl 9.4.2013, 21:42
Читаю, что выдаут гугл с яндексом, и сижу туплю, везде так любят написать кучу воды, что не ясно, что именно то самое нужное, либо же опишут сам проект, без примера использования. Прошу просто написать мне простой пример, есть у меня переменная $text, там хтмл, как выглядит переменная $allowed_tags и как выглядит команда, чтоб текст обезопасить.
Ну примерно так:
$text = '...';
$allowed_tags = 'пример как должно быть';
$safer_text = как тут правильно вызвать команду?

Большое спасибо всем кто поможет.

Автор: Fortop 10.4.2013, 00:12
Цитата(animegirl @  9.4.2013,  21:42 Найти цитируемый пост)
$safer_text = как тут правильно вызвать команду?


http://www.php.net/manual/en/function.strip-tags.php 
что ли?


Или речь идет о http://htmlpurifier.org/docs ?

Автор: animegirl 10.4.2013, 00:13
Fortop, Второе

Автор: Fortop 10.4.2013, 01:55
Код

require_once '/path/to/HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html);


Собственно из мануала  smile

Добавлено через 2 минуты и 28 секунд
Код

$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.DefinitionID', 'enduser-customize.html tutorial');
$config->set('HTML.DefinitionRev', 1);
$config->set('Cache.DefinitionImpl', null); // remove this later!
$def = $config->getHTMLDefinition(true);
$def->addAttribute('a', 'target', new HTMLPurifier_AttrDef_Enum(
  array('_blank','_self','_target','_top')
));
$form = $def->addElement(
  'form',   // name
  'Block',  // content set
  'Flow', // allowed children
  'Common', // attribute collection
  array( // attributes
    'action*' => 'URI',
    'method' => 'Enum#get|post',
    'name' => 'ID'
  )
);
$form->excludes = array('form' => true);

Автор: animegirl 10.4.2013, 02:41
Fortop, Эмммм, он не модульный?

Автор: Fortop 10.4.2013, 14:31
Цитата(animegirl @  10.4.2013,  02:41 Найти цитируемый пост)
Fortop, Эмммм, он не модульный? 

что значит не модульный?

Он настраиваемый.
Хотя при желании можно пожалуй и дописать его

Автор: animegirl 10.4.2013, 22:11
Fortop, 
Я честно думала, что все эти нагромождения в других примерах, это типичный дурацкий выпендрёж, а нет, всё действительно так плох. Ненавижу классы.

Модульный, в моём понимание, это когда ставишь пакет с функциями, и их можно напрямую использовать,а  тут нужно инклудить его.

Автор: Sanchezzz 10.4.2013, 23:13
animegirl,  знаю вашу не любовь к классам из соседних давних тем, есть такая штука http://php.net/manual/ru/function.spl-autoload-register.php чтобы легко было подключать классы, главное функцию подключения классов реализовать грамотно. 
Даже стандарт есть организации функции  https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md

И жизнь станет лучше.

Автор: Fortop 11.4.2013, 11:33
Цитата(animegirl @  10.4.2013,  22:11 Найти цитируемый пост)
это когда ставишь пакет с функциями, и их можно напрямую использовать,а  тут нужно инклудить его. 

Я не знаю ни одного пакета с функциями написанного на php. который не нужно подключать.

И это не зависит от того используются функции или классы.

Автор: IgorIV 11.4.2013, 12:01
Fortop,  имелось ввиду, что допустим поставив imagick, можно сразу использовать newImage не писав никаких include.

Автор: Fortop 11.4.2013, 12:36
Цитата(IgorIV @  11.4.2013,  12:01 Найти цитируемый пост)
Fortop,  имелось ввиду, что допустим поставив imagick, можно сразу использовать newImage не писав никаких include.

ну вранье же  smile 

от наличия imagick в системе работать ничего не будет.

необходимо еще и установить соответствующий extension в настройках php, чем это отличается от include?

Автор: Sanchezzz 11.4.2013, 15:37
наверное тем что эту проблему решит другой человек админ итд... всего 1 раз на данной машине.

Автор: animegirl 11.4.2013, 21:59
Цитата(Fortop @ 11.4.2013,  11:33)
Цитата(animegirl @  10.4.2013,  22:11 Найти цитируемый пост)
это когда ставишь пакет с функциями, и их можно напрямую использовать,а  тут нужно инклудить его. 

Я не знаю ни одного пакета с функциями написанного на php. который не нужно подключать.

И это не зависит от того используются функции или классы.

GeoIP, функция geoip_country_code_by_name просто так "из коробки" нету, ставится деб пакет "php5-geoip" и без инклудов, всё начинает работать-

Добавлено через 1 минуту и 31 секунду
Угу, этот админ это я
Видимо всё прописывается в момент установки пакетов, даже не знала об этом. А этим пакетом, который хтмл проверяет, такое можно сделать?

Автор: Sanchezzz 11.4.2013, 22:52
Если тока на Cи переписать и сделать пакет.

Посмотрите мой http://#d2558863 про spl_autoload_register или __autoload  один раз сделаете функцию которая будет ваши классы подрубать из разных папок и не нужно делать 1050 инклудов, функция с инструкциями по подключению файлов сделает это за вас.

Автор: Fortop 12.4.2013, 03:36
Цитата(Sanchezzz @  11.4.2013,  22:52 Найти цитируемый пост)
Если тока на Cи переписать и сделать пакет.

Ох уж знатоки....


Цитата(animegirl @  11.4.2013,  21:59 Найти цитируемый пост)
 ставится деб пакет "php5-geoip" и без инклудов, всё начинает работать-

Читать умеем?
Цитата(Fortop @  11.4.2013,  11:33 Найти цитируемый пост)
ни одного пакета с функциями написанного на php



Но при желании можно и php файлы подключать аналогично расширениям.
http://www.php.net/manual/en/ini.core.php#ini.auto-prepend-file
Вопрос - зачем?

Автор: Sanchezzz 12.4.2013, 09:04
и зачем только вот такие навороты устраивать?) 

Автор: cia 12.4.2013, 09:44
Цитата(Sanchezzz @  11.4.2013,  22:52 Найти цитируемый пост)
Если тока на Cи переписать и сделать пакет.


Можно пойти ещё дальше и вообще без единого инклюда обойтись - надо лишь весь сайт на си написать и засунуть в php extension... Хотя... нафиг тут тогда вообще PHP?  smile 

Цитата(Sanchezzz @  11.4.2013,  22:52 Найти цитируемый пост)
Посмотрите мой пост про spl_autoload_register или __autoload  один раз сделаете функцию которая будет ваши классы подрубать из разных папок и не нужно делать 1050 инклудов, функция с инструкциями по подключению файлов сделает это за вас.

Это, конечно, дело личное, но я бы не стал использовать такой вариант: по-моему лучше самому контролировать подключаемые файлы и подключать на каждый запрос исключительно то, что нужно. Кроме того возможны (и на самом деле не так уж и редки) случаи, когда один класс (или функция) имеют больше одной реализации и выбирать нужную всё равно в этом случае придётся вручную.

А 1050 инклюдов - это свидетельство о том, что структура спланирована неправильно. Их должно быть два-три. И каждый файл сам должен цеплять необходимые ему зависимые файлы. Как-то так  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)