Использование скриптов в полной новости

Использование скриптов в полной новости

Если захотите внедрить небольшой скрипт непосредственно в сам текст новости, то это не получится. Разработчики DLE запретили использование/выполнение любого кода в новости в угоду безопасности движка. А что делать когда ну очень уж надо?


Если откроем engine/classes/parse.class.php и посмотрим примерно на 46 строку (нумерация в разных версиях может отличаться), то увидим следующее:
var $tagBlacklist = array ('applet', 'body', 'bgsound', 'base', 'basefont', 'frame', 'frameset', 'head', 'html', 'id', 'ilayer', 'layer', 'link', 'meta', 'name', 'script', 'style', 'title', 'xml' ); 

Здесь полный перечень того, что запрещает DLE вставлять в текст новостей. Теперь рассмотрим, как разрешить вставку кода на примере тега:
<script>

Установка:
1. Открыть engine/classes/parse.class.php и удалить , 'script' из строки:
var $tagBlacklist = array ('applet', 'body', 'bgsound', 'base', 'basefont', 'frame', 'frameset', 'head', 'html', 'id', 'ilayer', 'layer', 'link', 'meta', 'name', 'script', 'style', 'title', 'xml' ); 

2. Ниже найти и удалить все строки содержащие:
$source = preg_replace( "#<script#i", "&lt;script", $source ); 

Готово!

Чтобы проверить работает ли вставка скриптов в саму новость добавьте:
<script>alert("Hello World!");</script>

Опубликуйте статью и откройте ее на сайте. Если увидели всплывающее сообщение - поздравляем, все сделано правильно. По аналогии разблокируются и остальные теги.
 
Версия DLE: 10.х
Автор: Артем Мáлков
Источник
Информация
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.