Зачем использовать ob_start и eval вместо простого включения в этот плагин Joomla?

Я смотрел код плагина для Joomla! CMS для необходимой мне функциональности: возможность запуска пользовательских скриптов PHP, когда Joomla! Плагин /События .

Я хотел изучить механизм, используемый этим плагином, и код выглядел мне немного странным (я довольно новичок в PHP, поэтому, я думаю, я что-то пропустил).

Вот фрагмент кода для одного из вышеупомянутых событий, полный плагин можно загрузить здесь .

function onBeforeCompileHead()
{
    if (strcmp($this->params->get('onBeforeCompileHead_custom_php_file_path'),'')!=0)
    {
        $custom_php_file_path = JPATH_SITE.DS.$this->params->get('onBeforeCompileHead_custom_php_file_path');
        ob_start();
        include($custom_php_file_path);
        $php = ob_get_contents();
        eval($php);
        ob_end_clean();
    }
}

Я не понимаю, почему он был использован ob_start для захвата include, а затем eval it (btw не eval evil ? Или потому, что пользовательский ввод для eval не используется ok ?).

Я попытался удалить всю эту часть, используя isntead просто include и он работал.

Что мне не хватает?

1 голос | спросил Gruber 17 J000000Sunday16 2016, 21:07:36

0 ответов


Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132