ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Сжатие php кода путём удаления комментариев, пробелов и т.п.
  #1  
Старый 29.03.2009, 20:20
Аватар для -Hormold-
-Hormold-
Постоянный
Регистрация: 29.09.2007
Сообщений: 617
Провел на форуме:
3250478

Репутация: 999


Отправить сообщение для -Hormold- с помощью ICQ
По умолчанию Сжатие php кода путём удаления комментариев, пробелов и т.п.

Собственно, функции:

Максимальное сжатие:
PHP код:
<?
function compress_code($code) {
    
$array token_get_all($code);
    
$ret "";
    for(
$i 0$i count($array); $i++) {
        
$obj $array[$i];
        if(
is_string($obj))
            
$ret .= $obj;
        else {
            
$a $obj[0];
            
$s $obj[1];
            if(
$a == T_ABSTRACT || $a == T_CASE || $a == T_CLASS || $a == T_CLONE || $a == T_CONST || $a == T_DECLARE || $a == T_ECHO || $a == T_ELSE || $a == T_FINAL || $a == T_FUNCTION || $a == T_GLOBAL || $a == T_INCLUDE || $a == T_INCLUDE_ONCE || $a == T_INTERFACE || $a == T_NEW || $a == T_OLD_FUNCTION || $a == T_PRINT || $a == T_PRIVATE || $a == T_PUBLIC || $a == T_PROTECTED || $a == T_RETURN || $a == T_REQUIRE || $a == T_REQUIRE_ONCE || $a == T_STATIC || $a == T_PROTECTED || $a == T_THROW || $a == T_USE || $a == T_VAR || $a == T_LNUMBER)
                
$ret .= strtolower($s)." ";
            if(
$a == T_AND_EQUAL || $a == T_CHARACTER || $a == T_CONCAT_EQUAL || $a == T_CONSTANT_ENCAPSED_STRING || $a == T_CURLY_OPEN || $a == T_DEC || $a == T_DIV_EQUAL || $a == T_DOLLAR_OPEN_CURLY_BRACES || $a == T_DOUBLE_ARROW || $a == T_DOUBLE_COLON || $a == T_INC || $a == T_INLINE_HTML || $a == T_IS_EQUAL || $a == T_IS_GREATER_OR_EQUAL || $a == T_IS_IDENTICAL || $a == T_IS_SMALLER_OR_EQUAL || $a == T_MINUS_EQUAL || $a == T_MUL_EQUAL || $a == T_MOD_EQUAL || $a == T_OPEN_TAG_WITH_ECHO || $a == T_OR_EQUAL || $a == T_PAAMAYIM_NEKUDOTAYIM || $a == T_PLUS_EQUAL || $a == T_SL || $a == T_SL_EQUAL || $a == T_SR || $a == T_SR_EQUAL || $a == T_START_HEREDOC || $a == T_STRING || $a == T_ENCAPSED_AND_WHITESPACE || $a == T_NUM_STRING || $a == T_STRING_VARNAME || $a == T_XOR_EQUAL || $a == T_OBJECT_OPERATOR || $a == T_IS_NOT_EQUAL || $a == T_IS_NOT_IDENTICAL)
                
$ret .= $s;
            if(
$a == T_AS || $a == T_BOOLEAN_AND || $a == T_BOOLEAN_OR || $a == T_EXTENDS || $a == T_IMPLEMENTS || $a == T_INSTANCEOF || $a == T_LOGICAL_AND || $a == T_LOGICAL_OR || $a == T_LOGICAL_XOR)
                
$ret .= " ".strtolower($s)." ";
            if(
$a == T_CLASS_C || $a == T_DIR || $a == T_FILE || $a == T_FUNC_C || $a == T_LINE || $a == T_METHOD_C || $a == T_NS_C)
                
$ret .= strtoupper($s);
            if(
$a == T_ARRAY || $a == T_ARRAY_CAST || $a == T_BOOL_CAST || $a == T_BREAK || $a == T_CATCH || $a == T_CONTINUE || $a == T_DEFAULT || $a == T_DO || $a == T_DOUBLE_CAST || $a == T_ELSEIF || $a == T_EMPTY || $a == T_ENDDECLARE || $a == T_ENDFOR || $a == T_ENDFOREACH || $a == T_ENDIF || $a == T_ENDSWITCH || $a == T_ENDWHILE || $a == T_WHILE || $a == T_EVAL || $a == T_EXIT || $a == T_FOR || $a == T_FOREACH || $a == T_HALT_COMPILER || $a == T_IF || $a == T_INT_CAST || $a == T_ISSET || $a == T_LIST || $a == T_OBJECT_CAST || $a == T_STRING_CAST || $a == T_SWITCH || $a == T_TRY || $a == T_UNSET || $a == T_UNSET_CAST)
                
$ret .= strtolower($s);
            if(
$a == T_CLOSE_TAG)
                
$ret .= " ".$s;
            if(
$a == T_DNUMBER)
                
$ret .= $s." ";
            if(
$a == T_END_HEREDOC) {
                
$ret .= $s.";\r\n";
                
$i++;
            }
            if(
$a == T_OPEN_TAG)
                
$ret .= trim(strtolower($s))." ";
            if(
$a == T_VARIABLE) {
                if(
$s == '$HTTP_POST_VARS')
                    
$s '$_POST';
                if(
$s == '$HTTP_GET_VARS')
                    
$s '$_GET';
                if(
$s == '$HTTP_REQUEST_VARS')
                    
$s '$_REQUEST';
                if(
$s == '$HTTP_COOKIE_VARS')
                    
$s '$_COOKIE';
                if(
$s == '$HTTP_POST_FILES')
                    
$s '$_FILES';
                if(
$s == '$HTTP_SERVER_VARS')
                    
$s '$_SERVER';
                if(
$s == '$HTTP_SESSION_VARS')
                    
$s '$_SESSION';
                
$ret .= $s;
            }
        }
    }
    
$ret preg_replace("#<\?php#is","<?",$ret);
    
$ret preg_replace("#php \?>#is","?>",$ret);
    
$ret str_replace("<?  ?>","",$ret);
    return 
$ret;
}
?>
Только удаление комментраиев:
PHP код:
function remove_comments($code) {
    
$array token_get_all($code);
    
$ret "";
    for(
$i 0$i count($array); $i++) {
        
$obj $array[$i];
        if(
is_string($obj))
            
$ret .= $obj;
        else {
            if(!
strstr(token_name($obj[0]),"COMMENT"))
                
$ret .= $obj[1];
        }
    }
    return 
$ret;

Пример:
PHP код:
$cnt=compress_code(file_get_contents('script.php'));
file_put_contents('script.php',$cnt); 
(C) Eugen, с tem.dp.ua
 
Ответить с цитированием

  #2  
Старый 29.03.2009, 20:28
Аватар для Krist_ALL
Krist_ALL
Banned
Регистрация: 14.01.2009
Сообщений: 515
Провел на форуме:
1996429

Репутация: 468


Отправить сообщение для Krist_ALL с помощью ICQ
По умолчанию

ИНтересно, но безполезно)
 
Ответить с цитированием

  #3  
Старый 29.03.2009, 20:29
Аватар для -Hormold-
-Hormold-
Постоянный
Регистрация: 29.09.2007
Сообщений: 617
Провел на форуме:
3250478

Репутация: 999


Отправить сообщение для -Hormold- с помощью ICQ
По умолчанию

Почему, иногда несколько бывает даже очень полезно =)
 
Ответить с цитированием

  #4  
Старый 29.03.2009, 20:48
Аватар для [Raz0r]
[Raz0r]
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
Провел на форуме:
3244717

Репутация: 1980
Отправить сообщение для [Raz0r] с помощью ICQ
По умолчанию

автор видимо не в курсе, что существует функция php_strip_whitespace()
 
Ответить с цитированием

  #5  
Старый 29.03.2009, 20:56
Аватар для -Hormold-
-Hormold-
Постоянный
Регистрация: 29.09.2007
Сообщений: 617
Провел на форуме:
3250478

Репутация: 999


Отправить сообщение для -Hormold- с помощью ICQ
По умолчанию

Наверное =)
Но там же не только комменты...
 
Ответить с цитированием

  #6  
Старый 29.03.2009, 20:57
Аватар для Sharky
Sharky
Познавший АНТИЧАТ
Регистрация: 01.05.2006
Сообщений: 1,021
Провел на форуме:
3424739

Репутация: 921


Отправить сообщение для Sharky с помощью ICQ
По умолчанию

против я этих сжатий которые только сделают код нечитабельным а уменьшат на пару килобайт
 
Ответить с цитированием

  #7  
Старый 29.03.2009, 20:59
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

2 Sharky:

а зачем тебе читабельный шелл, например?
 
Ответить с цитированием

  #8  
Старый 29.03.2009, 21:18
Аватар для rcc0023
rcc0023
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
Провел на форуме:
644324

Репутация: 11
По умолчанию

Есть небольшой недочет..

Цитата:
else {$l_kod=7 ;};
целых два огромнейших пробела!!
 
Ответить с цитированием

  #9  
Старый 29.03.2009, 21:25
Аватар для BlackSun
BlackSun
Members of Antichat - Level 5
Регистрация: 01.04.2007
Сообщений: 1,268
Провел на форуме:
10046345

Репутация: 4589


По умолчанию

PHP код:
$code = '<? /* тут типа куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча кода */ ?>';
$code = base64_encode(gzdeflate($code));
echo $code;
Распаковка - base64 decode && gzinflate && eval
 
Ответить с цитированием

  #10  
Старый 29.03.2009, 22:10
Аватар для zeppe1in
zeppe1in
Постоянный
Регистрация: 12.07.2006
Сообщений: 327
Провел на форуме:
1654818

Репутация: 117
По умолчанию

-Hormold-
надо ещо все переменные переименовывать в короткие названия типо, $a $b.
а потом base64_encode(gzdeflate($code). для шела самое то.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
На PHP, как на "Новые ворота"... Mertvii-Listopad Чужие Статьи 7 18.09.2006 12:42
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31
Внедрение Sql кода с завязанными глазами k00p3r Чужие Статьи 0 12.06.2005 20:48



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ