Архиполезная фигня для одноразового программирования и программирования в реальном времени. Сама строка является примером так называемого настоящего хака ( true hack ). Можете сами попробовать решить такую задачу средствами php: С помощью readline получить строку добавить её в readline history и исполнить её в eval, при этом нельзя использовать переменные. Spoiler: исходник строки Code: <?php while(true) eval ( call_user_func ( function() { readline_add_history(func_get_arg(0)); return(func_get_arg(0)); }, readline("<?php ") ) ); Иногда при использовании строки она завершается с ерором, чаще всего это происходит тогда когда ошибаешся с синтаксимом или напишешь неправильно имя функции. Для сохранения переменных и истории заделана функция которая всё сохраняет на выходе. Здесь тоже всё без переменных. И учтите если скрипт не нашел историю и переменные он вам об этом не скажет, но ругнётся на выходе если не сможет сохранить их. Code: <?php register_shutdown_function ( create_function ( "" ,<<< 'src' readline_write_history( $_SERVER['HOME'].'/.cmpoka/history' ); file_put_contents( $_SERVER['HOME'].'/.cmpoka/GLOBALS', "<?php\n" ); reset( $GLOBALS ); while( key( $GLOBALS ) !== NULL && current( $GLOBALS ) !== false ) { if ( !in_array ( key( $GLOBALS ) ,array ( 'GLOBALS' ,'_SERVER' ,'_GET' ,'_POST' ,'_FILES' ,'_REQUEST' ,'_SESSION' ,'_ENV' ,'_COOKIE' ,'php_errormsg' ,'HTTP_RAW_POST_DATA' ,'http_response_header' ,'argc' ,'argv' ) ) && in_array ( gettype( current( $GLOBALS ) ) ,array ( 'boolean' ,'integer' ,'double' ,'float' ,'string' ,'array' ,'NULL' ) ) ) { file_put_contents ( $_SERVER['HOME'].'/.cmpoka/GLOBALS' , '$'.key( $GLOBALS ) . '=' . var_export( current( $GLOBALS ) ,true ) . ";\n" ,FILE_APPEND ); } next( $GLOBALS ); } src )); if( file_exists( $_SERVER['HOME'].'/.cmpoka/history' ) && is_file( $_SERVER['HOME'].'/.cmpoka/history' ) ) { readline_read_history( $_SERVER['HOME'].'/.cmpoka/history' ); } if( file_exists( $_SERVER['HOME'].'/.cmpoka/GLOBALS' ) && is_file( $_SERVER['HOME'].'/.cmpoka/GLOBALS' ) ) { include( $_SERVER['HOME'].'/.cmpoka/GLOBALS' ); } Так же пригодится функция для отображения списка переменных. Code: <?php function print_vars() { reset($GLOBALS); while(key($GLOBALS)!==NULL && current($GLOBALS)!==false) { if( !in_array ( key($GLOBALS), array ( 'GLOBALS', '_SERVER', '_GET', '_POST', '_FILES', '_REQUEST', '_SESSION', '_ENV', '_COOKIE', 'php_errormsg', 'HTTP_RAW_POST_DATA', 'http_response_header', 'argc','argv' ) ) && in_array ( gettype(current($GLOBALS)), array ( 'boolean', 'integer', 'double', 'float', 'string', 'array', 'NULL' ) ) ) { echo('$'.key($GLOBALS).' - '.gettype(current($GLOBALS))."\n" ); } next($GLOBALS); } } И парочка функция для более удобной отгрузки загрузки переменных. Code: <?php function export( $file_name, $variable ) { file_put_contents( $file_name, serialize($variable) ); } function import( $file_name ) { return( unserialize( file_get_contents( $file_name ) ) ); } function load_list( $file_name ) { return( file( $file_name, FILE_IGNORE_NEW_LINES ) ); } function save_list( $file_name, $array ) { if( is_array( $array ) ) { $text .= ''; foreach( $array as $string ) { if( is_string( $string ) ) { $text .= $string."\n"; } } return( file_put_contents( $file_name, $text ) ); } else { return( false ); } } function unset_all() { $names = array( ); reset($GLOBALS); while(key($GLOBALS)!==NULL && current($GLOBALS)!==false) { if( !in_array ( key($GLOBALS), array ( 'GLOBALS', '_SERVER', '_GET', '_POST', '_FILES', '_REQUEST', '_SESSION', '_ENV', '_COOKIE', 'php_errormsg', 'HTTP_RAW_POST_DATA', 'http_response_header', 'argc','argv' ) ) && in_array ( gettype(current($GLOBALS)), array ( 'boolean', 'integer', 'double', 'float', 'string', 'array', 'NULL' ) ) ) { array_push( $names, key($GLOBALS) ); } next($GLOBALS); } foreach( $names as $name ) { unset( $GLOBALS[ $name ] ); } } Вообще я пользуюсь данным инструментом для создания одноразовых программ. Выглядит это примерно так: Загрузил один список, фильтранул, загрузил второй, фильтранул, склеил вместе, посмотрел результат, отгрузил array, отгрузил список. Удобно пользоваться комбинацией кода из редактора и из строки. Например в редакторе пишем такой код Code: if( false ) { // Здесь уже ненужный код } if( true ) { // Здесь что-то исполняется изменяются переменные } Затем делаем include файла из редактора в строке, смотрим результаты, подправляем переменные. В общем корректируем результаты исполнения куска кода. В целом эта штука довольно сильный инструмент. Например: однажды, буквально за 20 минут и только им, я распаковал dle.
Если не знаешь, сиди молча ( pa3BeJLocb nu3ga6oJLoB ). Имелась в виду вот эта упаковка. Code: <?php /* ===================================================== DataLife Engine - by SoftNews Media Group ----------------------------------------------------- http://dle-news.ru/ ----------------------------------------------------- Copyright (c) 2004,2016 SoftNews Media Group ===================================================== */ ?><?php $_F=__FILE__;$_X='Pzc5PzRCNA1zRyoNc0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBDXMxdHZNdkxoU2wxPmtwaGtsMS0xS3oxCk9TTVpsclUxSGxpaHYxNj1PUDQNcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS 0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDXMxQk1NNDpHR2ljbC1rbHJVST1QRw1zLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NczFYTzR6PWhwQk0xKH0pMU53d2EtTndWbjEKT1NNWmxyVTFIbGlodjE2PU 9QNA1zQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENczHE4O3t++kx6u7kMefg+ej5 5e0x4OLy7vDx6ujs6DHv8ODi4OzoDXNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQ 1zMdTg6es6MWhraWxvSTRCNA1zLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NczHN 4Oft4Pfl7ejlOjHD6+Di7eD/MfHy8ODt6PbgDXNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU FBQUFBQQ1zKkcNcw1zQE9LX1VNdj1NMSgpOw1zQE9LX2hmNGNofWhNX1NjUFVCMSgxdzEpOw1zDXNoUygxIWlsU2hrbGkoMSc+X3Q+ L3E+WFlKPnQnMSkxKTFqDXMNcwlAbD09Tz1fPWw0Tz1NaGtwMSgxPl9ZTEwxXjE+X2JZcVpXWjYxXjE+X1pESldYPjEpOw1zCUBoa2 hfVWxNMSgxJ2w9PU89Xz1sNE89TWhrcCcsMT5fWUxMMV4xPl9iWXFaV1o2MV4xPl9aREpXWD4xKTsNcw1zdTFsY1VsMWoNcw1zCUBs PT1PPV89bDRPPU1oa3AxKDE+X1lMTDFeMT5fYllxWldaNjFeMT5fdD4vcT5YWUo+dDFeMT5fWkRKV1g+MSk7DXMJQGhraF9VbE0xKD EnbD09Tz1fPWw0Tz1NaGtwJywxPl9ZTEwxXjE+X2JZcVpXWjYxXjE+X3Q+L3E+WFlKPnQxXjE+X1pESldYPjEpOw1zDXN1DXMNc0Bo a2hfVWxNMSgxJ2loVTRjdnpfbD09Tz1VJywxTT1QbDEpOw1zQGhraF9VbE0xKDEnQk1mY19sPT1PPVUnLDFTdmNVbDEpOw1zDXNpbF Noa2wxKDEndFlKWUxXWz4+WjZXWj4nLDFNPVBsMSk7DXNpbFNoa2wxKDEncURESl90V3EnLDFpaD1rdmZsMSgxX19bV0w+X18xKTEp Ow1zaWxTaGtsMSgxJz5aNldaPl90V3EnLDFxRERKX3RXcTFJMSdHbGtwaGtsJzEpOw1zDXM9bC5QaD1sX09rfWwxcURESl90V3ExST EnR2xrcGhrbEdoa2hNSTRCNCc7DXMNcz83';$_D=strrev('edoced_46esab');eval($_D('JF9YPWJhc2U2NF9kZWNvZGUoJF9Y KTskX1g9c3RydHIoJF9YLCd9ZE94dGlBcnU4L2NHNDJOd2pdU002Q1QuRgpZc21bSEVETG8zeWZiPDBCV1puVXFLSlJwPmthaFhsIF FnejV7PVZQdjk3ZUkxJywnY2tvekRkPXd9SlBsL3A4MjB7N2Z0R0hZcVFTQQpbRk01T0x4OV1tV1ZCaElONnNSYlQzZ0VuNGlDZVh2 anlaVXIxdWE8PksuICcpOyRfUj1zdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOy RfWD0wOw=='));?>