• Автор:

    Flesha
  • Добавлено:

    апр 08, 2014
  • Комментариев:

    0
  • Просмотров:

    1 703

Хак Преобразование исходного кода

Хак Преобразование исходного кода

Данный хак позволяет показать работу исходного кода php, javascript, html прямо на странице размещенной новости.

Установка:

engine/classes/parse.class.php

1. Добавляем новые глобальные для последующей защиты
Найти часть кода:
function BB_Parse($source, $use_html = TRUE) {

global $config, $lang;


После $lang добавить ,$member_id,$user_group

Для примера как должно быть:
function BB_Parse($source, $use_html = TRUE) {

global $config, $lang ,$member_id,$user_group; //добавлено : ,$member_id,$user_group


Далее ниже после строк:
if ( !$this->allow_code ) {

$source = preg_replace_callback( "#<pre><code>(.+?)</code></pre>#is", array( &$this, 'clear_p_tag'), $source );

}


Вставить:
/* для вставки исходных кодов html php js     */

$source = ($user_group[$member_id['user_group']]['allow_admin']) ? preg_replace( "#\[usehtml\](.+?)\[/usehtml\]#is", "<!--usehtml-->\\1<!--usehtml_end-->", $source ) : preg_replace( "#\[usehtml\](.+?)\[/usehtml\]#is", "\\1", $source );

$source =( $user_group[$member_id['user_group']]['allow_admin']) ? preg_replace( "#\[usephp\](.+?)\[/usephp\]#is", "<!--usephp-->\\1<!--usephp_end-->",
$source ) : preg_replace( "#\[usephp\](.+?)\[/usephp\]#is", "\\1", $source );

Далее ниже в функции function decodeBBCodes после строки:
if( $this->filter_mode ) $txt = $this->word_filter( $txt, false );


Вставить:
/* для вставки исходных кодов html php js    - обратнго для редактора */

$txt = preg_replace( "#&lt;!--usehtml-->(.+?)&lt;!--usehtml_end-->#is", '[usehtml]\\1[/usehtml]', $txt );

$txt = preg_replace( "#&lt;!--usephp-->(.+?)&lt;!--usephp_end-->#is", '[usephp]\\1[/usephp]', $txt );


2) Открываем файл index.php в корне сайта

Над строкой:
echo $tpl->result['main'];

Вставить:
/* для вставки исходных кодов html php js    - вывод данных */

$tpl->result['main'] = preg_replace_callback( "#<!--(usehtml)-->(.+?)<!--usehtml_end-->#is","show_this_code",$tpl->result['main']);

$tpl->result['main'] = preg_replace_callback( "#<!--(usephp)-->(.+?)<!--usephp_end-->#is","show_this_code",$tpl->result['main']);

function show_this_code($matches=array()){

$text = (preg_match("#<pre><code>(.+?)</code></pre>#is",$matches[2],$match)) ? html_entity_decode(preg_replace("/<br>|<br \/>/", "",$match[1]), ENT_QUOTES) : '' ;

$type = $matches[1];

if($type == 'usehtml'){return $text;

}elseif($type == 'usephp'){

ob_start();

ob_implicit_flush(0);

eval($text);

$con = ob_get_clean();

return $con;

}

return $matches[0];

}


Установка закончена!

Использование:

Для исходных кодов JS, HTML
[usehtml][code]
ваш js или html код
[/ usehtml][/ code]


Для исходных кодов PHP
[usephp][code]
ваш php код
[/ usephp][/ code]


Нужно убрать пробелы при закрывающих тегах в использование.

При размещении php кода открывающих тегов php использовать не нужно.

Автор: rocksmart dle
Вернуться
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.