Как стать автором
Обновить
11
0

Пользователь

Отправить сообщение
«Конференция без смешного доклада Аксёнова — печеньки на ветер». Народная мудрость.
Аксёнов то будет?!
В скайпе всё это время был поисковик???
Это какой-то аплоадер ключей. Может лицензию так заливают на сайт клиента. С кучей отладки и дебагом.
Немношк читабельнее
<?php
/**
 * version: 16
 * date: 2015-05-28
 */

// init
$e = 0;
if (!$e) {
    $rr = NULL;
    $rd = NULL;
    $_ = '';
    $pv = PHP_VERSION;
} else {
    $e = 103; // WAT???
}

// check php version >= 5.2
if (!$e) {
    if (version_compare(PHP_VERSION, '5.2', '>=')) {
        // ok!
    } else {
        $e = 113;
    }
}

if (!$e) {
    if (
        ini_get('allow_url_fopen')
        && ( !ini_get('magic_quotes_runtime') || ini_set('magic_quotes_runtime', 0) !== FALSE )
        && ( !intval(ini_get('mbstring.func_overload')) & 3 || mb_internal_encoding('8bit') )
        && ( ini_set('arg_separator.output', '&') || 1 )
    ) {
        // ok!
    } else {
        $e = 100;
    }
}

if (!$e) {
    @date_default_timezone_set('UTC');
}

if (!$e) {
    if (ini_get('magic_quotes_gpc')) {
        array_walk_recursive($_GET, function(&$v, $i){
            $v = stripslashes($v);
        });
        array_walk_recursive($_COOKIE, function(&$v, $i){
            $v = stripslashes($v);
        });
    }
}

if (!$e) {
    define('SVC_CVER', 16);
    define('SVC_CKEY', 'yhtQ49n2US53h653');
    define('SVC_HOST', 'cdn.virusdie.ru/');
    define('SVC_USERAGENT', "Mozilla/5.0\x20(compatible)\x20S.D.S.\x20Network\x20client/".SVC_CVER);

    ini_set('user_agent', SVC_USERAGENT);

    define('SVC_HOSTLINK', 'http://'.SVC_HOST);
    define('SVC_SUBPATH',
        isset($_SERVER['SCRIPT_NAME'])
        ? (
            in_array(dirname($_SERVER['SCRIPT_NAME']), array('/', '\\', '.'))
            ? ''
            : rtrim(strtr(dirname($_SERVER['SCRIPT_NAME']), array('\\' => '/')), '/')
        )
        : ''
    );
    define('SVC_CFILE', basename(__FILE__));
    define('SVC_CDIR',
        trim(defined('PATHINFO_FILENAME')
        ? pathinfo(SVC_CFILE, PATHINFO_FILENAME)
        : substr(SVC_CFILE, 0, strrpos(SVC_CFILE, '.')))
    );
    define('SVC_CCACHE', SVC_CDIR.'/cache');
    define('SVC_CRESTORE', SVC_CDIR.'/restore');
    define('SVC_CBACKUPS', SVC_CDIR.'/backups');
    define('SVC_CUSERINIT', SVC_CDIR.'/userinit.php');
    define('SVC_CTIME', time());
    define('SVC_CGZIP', intval(is_callable(gzinflate)));
    define('ERR_SVC', 900);
    define('SVC_CHOST',
        isset($_SERVER['SERVER_NAME']) && strlen($_SERVER['SERVER_NAME'])
        ? $_SERVER['SERVER_NAME']
        : (
            isset($_SERVER['HTTP_HOST']) && strlen($_SERVER['HTTP_HOST'])
            ? $_SERVER['HTTP_HOST']
            : $_SERVER['SERVER_ADDR']
        )
    );
    define('SVC_UID', trim(isset($_GET['svcuid']) ? $_GET['svcuid'].'' : (isset($_COOKIE['svcuid']) ? $_COOKIE['svcuid'].'' : '')));
    define('SVC_KEY', trim(isset($_GET['svckey']) ? $_GET['svckey'].'' : (isset($_COOKIE['svckey']) ? $_COOKIE['svckey'].'' : '')));
    define('SVC_MAC', trim(isset($_GET['svcmac']) ? $_GET['svcmac'].'' : (isset($_COOKIE['svcmac']) ? $_COOKIE['svcmac'].'' : '')));
    define('SVC_DBI', trim(isset($_GET['svcdbi']) ? $_GET['svcdbi'].'' : (isset($_COOKIE['svcdbi']) ? $_COOKIE['svcdbi'].'' : '')));
    define('SVC_SVC', isset($_GET['svc']) ? trim(strtr($_GET['svc'].'', '\\/.:?*', str_repeat('_', 6))) : '');
    define('SVC_CRC', isset($_GET['crc']) && (strlen($_GET['crc']) == 8) ? $_GET['crc'].'' : '');
    define('SVC_CLV', isset($_GET['clv']) ? abs(intval($_GET['clv'])) : 0);
    define('SVC_CTR', isset($_GET['ctr']) ? trim($_GET['ctr'].'') : '');
    define('SVC_DBG', isset($_GET['dbg']) ? min(3, abs(intval($_GET['dbg']))) : 0);
    define('SVC_SID', isset($_GET['sid']) ? intval($_GET['sid']) : 0);
    define('SVC_MD5', md5(implode(':', array(SVC_SVC, SVC_CRC, SVC_UID, SVC_KEY, SVC_DBI, SVC_CVER, SVC_CKEY, SVC_HOST, SVC_SID))));
    define('SVC_MACDATA', implode(':', array(SVC_SVC, SVC_CRC, SVC_UID, SVC_KEY, SVC_CTR)));
    define('SVC_CPHP', SVC_CCACHE.'/svc-'.SVC_SVC.'-'.SVC_MD5.'.php');
    define('SVC_CSVCCACHE', SVC_CCACHE.'/'.SVC_SVC);
    define('SVC_BETATEST', isset($_GET['svcbetatest']));
    define('SVC_QBASE', http_build_query(array(
        'svcuid' => SVC_UID,
        'svckey' => SVC_KEY,
        'ctr' => SVC_CTR,
        'cfn' => SVC_CFILE,
        'clv' => SVC_CVER,
        'php' => floatval(PHP_VERSION),
        'clz' => SVC_CGZIP,
        'ref' => SVC_CHOST,
        'sid' => SVC_SID
    )));
    define('SVC_QCDN', SVC_HOSTLINK.'cdn/?'.SVC_QBASE.'&'.http_build_query(array(
        'svc' => SVC_SVC,
        'crc' => SVC_CRC
    )));
    define('SVC_QAPI', SVC_HOSTLINK.'api/');
    define('SVC_QDATA', SVC_HOSTLINK.'data/');
    define('SVC_QDATASVC', SVC_HOSTLINK.'data/'.SVC_SVC.'/');
    define('SVC_QUPD', SVC_HOSTLINK.'update/?'.SVC_QBASE.'&'.http_build_query(array(
        'fmt' => 'update'
    )));
    define('SVC_QSPLASH', SVC_HOSTLINK.'splash/?'.http_build_query(array(
        'ref' => SVC_CHOST,
        'cfn' => SVC_CFILE
    )));
} else {
    $e = 104; // WAT???
}

if (!$e) {
    $svcContextOptions = array(
        'http' => array(
            'method' => 'GET',
            'header' => implode("\r\n", array(
                'Accept:*/*',
                'Connection:Close',
                'Referer:http://'.SVC_CHOST.'/'.SVC_CFILE,
                'User-agent:'.SVC_USERAGENT,
                'Cookie:'.http_build_query(array(
                    'svcuid' => SVC_UID,
                    'svckey' => SVC_KEY,
                    'svcdbi' => SVC_DBI
                ), '', ';'),
                ''
            )),
            'follow_location' => 1,
            'max_redirects' => 3,
            'timeout' => 30,
            'ignore_errors' => FALSE,
            'user_agent' => SVC_USERAGENT
        )
    );
    $svcContext = stream_context_create($svcContextOptions);
} else {
    $e = 103; // WAT???
}

if (!$e) {
    if (count($_GET)) {
        // ok!
    } else {
        $e = 115;
    }
}

if (!$e) {
    if (strlen(SVC_UID) && strlen(SVC_KEY)) {
        // ok!
    } else {
        $e = 101;
    }
}

if (!$e) {
    if (strlen(SVC_SVC)) {
        // ok!
    } else {
        $e = 102;
    }
}

if (!$e) {
    if (SVC_CLV <= SVC_CVER) {
        // ok!
    } else {
        $e = 105;
    }
}

if (!$e) {
    if (strlen(SVC_MAC) == 32) {
        // ok!
    } else {
        $e = 111;
    }

    if (!$e) {
        if (
            is_callable('hash_hmac')
            && !strcmp(hash_hmac('md5', SVC_MACDATA, SVC_CKEY.':'.SVC_CTR), SVC_MAC)
        ) {
            // ok!
        } elseif (
            is_callable('mhash')
            && defined('MHASH_MD5')
            && !strcmp(bin2hex(mhash(MHASH_MD5, SVC_MACDATA, SVC_CKEY.':'.SVC_CTR)), SVC_MAC)
        ) {
            // ok!
        } elseif (
            $tmp = str_pad(
                strlen(SVC_CKEY.':'.SVC_CTR) > 64 ? md5(SVC_CKEY.':'.SVC_CTR, TRUE) : SVC_CKEY.':'.SVC_CTR,
                64,
                "\x00",
                STR_PAD_RIGHT
            )
            && !strcmp(
                md5(($tmp ^ str_repeat("\x5c", 64)).md5(($tmp ^ str_repeat("\x36", 64)).SVC_MACDATA, TRUE)),
                SVC_MAC
            )
        ) {
            // ok!
        } else {
            $e = 111;
        }
    }

    if (!$e) {
        if (strlen(SVC_CTR)) {
            $tmp = is_file(SVC_CDIR.'/.ctr') ? @file_get_contents(SVC_CDIR.'/.ctr', 0, NULL, -1, strlen(SVC_CTR)).'' : '';
            if (
                strlen($tmp) <= strlen(SVC_CTR)
                && strcmp(SVC_CTR, str_pad($tmp, strlen(SVC_CTR), '0', STR_PAD_LEFT)) > 0
            ) {
                // ok!
            } else {
                $e = 112;
            }
        } else {
            $e = 112;
        }
    }

    if (!$e) {
        define('SVC_MACOK', 1);
    }
}

if (!$e) {
    if (!in_array(SVC_DBG, array(1, 2))) {
        // ok!
    } else {
        $e = 'some shit!';
    }
}

if (!$e) {
    if (
        ( is_dir(SVC_CCACHE) || @mkdir(SVC_CCACHE, 0751, TRUE) )
        && ( is_file(SVC_CDIR.'/.htaccess') || @file_put_contents(SVC_CDIR.'/.htaccess', "Order\x20Allow,Deny\nDeny\x20From\x20All\n") )
        && @file_put_contents(SVC_CDIR.'/.ctr', SVC_CTR."\n".SVC_MD5)
    ) {
        // ok!
    } else {
        $e = 106;
    }
}

if (!$e) {
    if (!rand(0, 30)) {
        if (is_dir(SVC_CCACHE)) {
            $files = @scandir(SVC_CCACHE);
            if (is_array($files)) {
                array_walk(
                    $files,
                    function($f, $i, $d){
                        if ($f[0] != ".") {
                            $f = $d[0]."/".$f;
                            if (is_file($f) && filemtime($f) <= $d[1]) {
                                @unlink($f);
                            }
                        }
                    }
                    array(SVC_CCACHE, SVC_CTIME - 86400 * 3)
                );
            }
        }
    }
}

if (!$e) {
    if (strlen(SVC_CRC) && is_file(SVC_CPHP)) {
        define('SVC_CACHED', 1);
    } else {
        if (is_string($rr = @file_get_contents(SVC_QCDN, 0, $svcContext))) {
            if (strlen($rr)) {
                if (strlen($rr) != 3 || !is_numeric($rr)) {
                    if (SVC_CGZIP) {
                        $rd = @gzinflate($rr);
                        if (is_string($rd) && strlen($rd)) {
                            // ok!
                        } else {
                            $e = 108;
                        }
                    } else {
                        $rd = &$rr; // ok!
                    }

                    if (!$e) {
                        if (@file_put_contents(SVC_CPHP, $rd) === strlen($rd)) {
                            define('SVC_CACHED', 0);
                        } else {
                            $e = 106;
                        }
                    }
                } else {
                    $e = intval($rr);
                }
            } else {
                $e = 108;
            }
        } else {
            $e = 107;
        }
    }
}

if (!$e) {
    if (!in_array(SVC_DBG, array(3))) {
        // ok!
    } else {
        $e = 'some shit!';
    }
}

if (!$e) {
    $rr = $rd = NULL;
}

if (!$e) {
    if (!is_file(SVC_CUSERINIT)) {
        // ok!
    } elseif (!is_readable(SVC_CUSERINIT)) {
        // ok!
    } elseif (include './'.SVC_CUSERINIT) {
        // ok!
    } else {
        $e = 114;
    }
}

if (!$e) {
    $e = 109;
    if (is_file(SVC_CPHP) && is_readable(SVC_CPHP)) {
        if (SVC_CACHED) {
            @touch(SVC_CPHP);
        }
        if ($_ = include './'.SVC_CPHP) {
            $e = 0; // ok!
        }
    }
}

if (!$e) {
    if (!(is_numeric($_) && strlen($_.'' == 3))) {
        // ok!
    } else {
        $e = intval($_);
    }
}

if ($e) {
    if (defined('SVC_DBG') && SVC_DBG && defined('SVC_MACOK')) {
        if (in_array(SVC_DBG, array(1))) {
            phpinfo();
        } elseif (in_array(SVC_DBG, array(2, 3))) {
            header('Content-type:text/plain');
            print_r(array(
                'CLIENT' => SVC_CVER,
                'STATUS' => $e,
                'HOST' => SVC_CHOST,
                'PHP' => PHP_VERSION,
                'SAPI' => PHP_SAPI,
                'UNAME' => php_uname(),
                'CWD' => getcwd(),
                'LAST_ERROR' => error_get_last(),
                'GZIP' => SVC_CGZIP,
                'PHP_MODULES' => implode(",\x20", get_loaded_extensions()),
                'CDN_RESULT' => gettype($rr) . (is_string($rr) ? '(' . strlen($rr) . ')' : '') . ":\x20" . '"' . (is_string($rr) ? (SVC_CGZIP ? base64_encode(substr($rr, 0, 200)) : substr($rr, 0, 200)) . '...' : $rr) . '"',
                'CDN_DECODED' => gettype($rd) . (is_string($rd) ? '(' . strlen($rd) . ')' : '') . ":\x20" . '"' . (is_string($rd) ? substr($rd, 0, 200) . '...' : $rd) . '"',
                '$_GET' => &$_GET,
                '$_SERVER' => &$_SERVER,
                'PHP_INI' => version_compare(PHP_VERSION, '5.3', '<') ? ini_get_all() : ini_get_all(NULL, FALSE)
            ));
        } elseif ($e == 115) {
            if (is_string($_ = @file_get_contents(SVC_QSPLASH, 0, $svcContext)) && strlen($_)) {
                print($_);
                $e = 0;
            } else {
                $e = 107;
            }
        } elseif (in_array($e, array(105, 402))) {
            if (
                is_string($rr = @file_get_contents(SVC_QUPD, 0, $svcContext))
                && strlen($rr)
                && substr($rr, 0, 5) == '<'.'?'.'php'
                && strpos($rr, "('SVC_CVER'," . SVC_CLV . ")") !== FALSE
                && strpos($rr, SVC_CKEY) !== FALSE
            ) {
                if (is_writable($_ = SVC_CFILE) || chmod($_, 0644)) {
                    @file_put_contents($_, $rr) === strlen($rr);
                } else {
                    $e = 106;
                }
            }
            $e = 110;
        } else {
            if (!defined('SVC_EMBEDDED')) {
                printf('%d', $e);
            }
        }
    }

    return $e;
} else {
    return 0;
}

Здравствуйте!
Вас приветствует Регистратор доменных имён REG.RU!
бла… бла… бла
Результат проверки антивируса Virusdie:
{VIRUSDIE}PregReplace.E: u0000000: /var/www/u0000000/data/www/site.ru/protected/vendor/yiisoft/yii/framework/vendors/TextHighlighter/Text/Highlighter/Renderer/Console.php

pear.php.net/package/Text_Highlighter
4 года жил себе preg_replace и не знал бед. А теперь вне закона! Как в дешёвом плохом кино.
Очень сыро и глючно. Попасть в просмотр игры можно далеко не с первого клика (выбрасывает на список). Попробовал войти как игрок, выкинуло на главную. Список игр на главной то пуст, то хаотично обновляется.

Оба участника видят код друг друга? Не круто ж совсем. Подсматривать можно :)

Обязательно добавьте сравнение ещё и по скорости выполнения и по объёму отжираемых ресурсов. И по объёму кода (гольферы порадуются).

А ваще круто! Спс!
На лепре был отличный пост «стукнись башкой об клавиатуру и напиши в комментах что получилось».
Просто сотрудник отдела выпуска патчей получил регу и зашёл его почитать.
Расскажите, как отлаживать игры в которых требуется авторизация внутри самого ВК?
Спасибо за ссылку на www.codeproject.com/Articles/6017/QuickFill-An-efficient-flood-fill-algorithm
На мелкой задаче применял заливку через соседние 4 точки. Получилось быстро, но только в силу мизерной области. Посмотреть можно тут github.com/Lexx918/JS.Xonix
А вот на крупной картинке упёрся в производительность. В статье по ссылке построчная заливка. Не стал портировать один-в-один, но применил от части тут github.com/Lexx918/Coloring
Плюс добавил прелоадер — сразу подготовил все строки изображения и сложил в кэш. Плюс каждую замкнутую область сразу пометил своим уникальным номером и это ещё немного ускорило поиск заливаемых строк. Летает!
Ещё раз спасибо.
Кто-нить нашёл алгоритмы пошустрее?
Да, не переживай. Второй раз даже лучше получилось.
Поддержу. git pull. Но остаётся открытым вопрос миграций в БД. Достаточно делать их обратно совместимыми и тогда нет проблем. Для отката хватает банально checkout'а.
Молодые мамонтята читают такие посты, подрастают и потом мы видим кучу бесполезного УГ, но с очень правильным и красивым бэкэндом. Странно что не упомянули о какой-нибудь модной методологии типа аджайла. Наверное, после постов типа «почему аджайл не работает» это уже не так модно? Видимо, надо написать ещё десяток статей а-ля «почему мой проект плох, ведь я хранил весь код в гите» или «почему товар в моём магазине не покупают, ведь его сайт написан на php версии over 9000».
Спасибо тебе, добрый человек. Без bind никак не мог решить задачу с addEventListener (и remove в перспективе). А с ним смог так:
var foo = {
    prop: 0,
    bar: function(){
        console.log(++this.prop);
    },
    init: function(){
        this.bar = this.bar.bind(this);
        document.addEventListener("click", this.bar);
    }
};
foo.init();
foo.bar();
Однокнопочный выключатель на фотках вверх ногами.
Думал не дождусь. Круто!
Никогда не смотрел, а теперь придётся посмотреть всё впрок и успеть до Нового года.
Волшебство! Dota2, DayZ… полёт нормальный.
Слабаки! Правильно писать так:
private function __privateFoo(){...}
public static function publicStaticBar(){...}

Чтоб уж наверняка никто не ошибся.
Скорее всего это уже не актуально в статье шестилетней давности, но не надо ли проверять done после FETCH, а не внутри WHILE?
Если селект нашёл одну строку, while успешно сработает, фетч получит данные, done не изменится, тело цикла отработает и запустится вторая итерация, while снова сработает, фетч ничего не найдёт, изменит done на 1, но цикл не прервётся и переменные со значениями прошлой итерации попадут ниже в логику тела цикла повторно.

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность