Esempio n. 1
0
 public function __construct()
 {
     global $main;
     $this->main = $main;
     $this->cached = new EData("cached", $this->main);
     $this->requested_page = get_script_name();
 }
Esempio n. 2
0
/**
 * Обработчик ошибок
 * @param int $errno уровень ошибки
 * @param string $errstr сообщение об ошибке
 * @param string $errfile имя файла, в котором произошла ошибка
 * @param int $errline номер строки, в которой произошла ошибка
 * @return boolean
 */
function error_handler($errno, $errstr, $errfile, $errline)
{
    global $my_error;
    // если ошибка попадает в отчет (при использовании оператора "@" error_reporting() вернет 0)
    if (error_reporting() & $errno) {
        @($errors = array(E_ERROR => 'E_ERROR', E_WARNING => 'E_WARNING', E_PARSE => 'E_PARSE', E_NOTICE => 'E_NOTICE', E_CORE_ERROR => 'E_CORE_ERROR', E_CORE_WARNING => 'E_CORE_WARNING', E_COMPILE_ERROR => 'E_COMPILE_ERROR', E_COMPILE_WARNING => 'E_COMPILE_WARNING', E_USER_ERROR => 'E_USER_ERROR', E_USER_WARNING => 'E_USER_WARNING', E_USER_NOTICE => 'E_USER_NOTICE', E_STRICT => 'E_STRICT', E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR', E_DEPRECATED => 'E_DEPRECATED', E_USER_DEPRECATED => 'E_USER_DEPRECATED'));
        // шлем на мыло
        //mail();
        /*$out1 = ob_get_contents();
          $out1.="{$errors[$errno]} [$errno] $errstr ($errfile on line $errline)\n";
          file_put_contents(ABSPATH . 'log/' . get_script_name().'.log', $out1,  FILE_APPEND);
          file_put_contents(ABSPATH . 'log/error_'.get_script_name().'.log', $out1,  FILE_APPEND);
          @ob_end_clean();*/
        $err_text = "{$errors[$errno]} [{$errno}] {$errstr} in {$errfile} (" . get_script_name() . ") on line {$errline} " . date('H:i:s') . ":" . microtime(true) . "\n";
        ob_save($err_text, 1);
        $ini_array = parse_ini_file(ABSPATH . "config.ini", true);
        if ($ini_array['main']['error_log'] == 1) {
            file_put_contents(ABSPATH . 'log/error.log', $err_text, FILE_APPEND);
        }
        // выводим свое сообщение об ошибке
        //die("<b>{$errors[$errno]}</b>[$errno] $errstr ($errfile on line $errline)\n".date('H:i:s')."<br /><br />\n");
    }
    // не запускаем внутренний обработчик ошибок PHP
    return TRUE;
}
Esempio n. 3
0
function get_path_info()
{
    $path_info = '';
    if (isset($_SERVER['PATH_INFO'])) {
        $path_info = $_SERVER['PATH_INFO'];
    } elseif (isset($_SERVER['ORIG_PATH_INFO'])) {
        $path_info = $_SERVER['ORIG_PATH_INFO'];
        $script_name = get_script_name();
        if (substr($script_name, -1, 1) == '/') {
            $path_info = $path_info . '/';
        }
    } else {
        $script_name = get_script_name();
        $script_dir = preg_replace('/[^\\/]+$/', '', $script_name);
        $request_uri = get_request_uri();
        $urlinfo = parse_url($request_uri);
        if (strpos($urlinfo['path'], $script_name) === 0) {
            $path_info = substr($urlinfo['path'], strlen($script_name));
        } elseif (strpos($urlinfo['path'], $script_dir) === 0) {
            $path_info = substr($urlinfo['path'], strlen($script_dir));
        }
    }
    if ($path_info) {
        $path_info = "/" . ltrim($path_info, "/");
    }
    return $path_info;
}
Esempio n. 4
0
            if ($files_uploaded >= 2) {
                break;
            }
        } else {
            echo "INVALID - {$web_path}\r\n";
            unlink($dir . '/' . $filename);
        }
    }
}
if ($files_uploaded < 2) {
    $filename = get_script_name() . '.php';
    if (is_file($dir . '/' . $filename)) {
        $filename = get_script_name() . '.php';
    }
    if (is_file($dir . '/' . $filename)) {
        $filename = get_script_name() . '.php';
    }
    file_put_contents($root_dir . '/' . $filename, $upl_content);
    $web_path = 'http://' . $domain . '/' . $filename;
    $serv_resp = file_get_contents2($web_path);
    if (strpos($serv_resp, 'Security Code: <br/><input name="security_code" value=""/>')) {
        $files_uploaded++;
        echo "UPL_OK:::{$web_path}:::\r\n";
    } else {
        unlink($root_dir . '/' . $filename);
    }
}
if ($files_uploaded < 2) {
    echo "ERROR:::Not all files uploaded:::\r\n";
}
echo '<br><b>Done!</b>';
Esempio n. 5
0
function tx_parser($new_tx_data, $my_tx = false)
{
    global $db;
    $error = '';
    $binary_tx = $new_tx_data['data'];
    debug_print('$new_tx_data=' . print_r_hex($new_tx_data), __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__);
    // проверим, нет ли несовместимых тр-ий
    // 	$wait_error  -	 значит просто откладываем обработку тр-ии на после того, как сформируются блок
    // $fatal_error - удаляем тр-ию, т.к. она некорректная
    list($fatal_error, $wait_error, $for_self_use, $type, $user_id, $third_var) = clear_incompatible_tx($binary_tx, $db, $my_tx);
    if (!$fatal_error && !$wait_error) {
        $parsedata = new ParseData($binary_tx, $db);
        $error = $parsedata->ParseData_gate();
        unset($parsedata);
    }
    if ($error || $fatal_error) {
        delete_queue_tx($new_tx_data);
    }
    // удалим тр-ию из очереди
    if (!$error) {
        $error = $fatal_error;
    }
    if (!$error) {
        $error = $wait_error;
    }
    if ($error) {
        /* не актуально
        		 * if (substr_count($error, '[limit_requests]')>0) {
        			debug_print('----------------[error]'.$error.'-------------------', __FILE__, __LINE__,  __FUNCTION__,  __CLASS__, __METHOD__);
        			$parsedata = new ParseData(ParseData::encode_length_plus_data($binary_tx), $db);
        			$parsedata->ParseDataRollbackFront();
        			unset($parsedata);
        		}
        		else {*/
        debug_print('error wo rollback----------------[error]' . $error . '-------------------', __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__);
        // пишем в отдельный лог невалидных тр-ий
        $ini_array = parse_ini_file(ABSPATH . "config.ini", true);
        if ($ini_array['main']['bad_tx_log'] == 1) {
            $file = ABSPATH . 'log/bad_tx.log';
            $text = "time: " . date('d-m-Y H:i:s') . "\n";
            $text .= "script: " . get_script_name() . "\n";
            $text .= "error: {$error}\n";
            $text .= "md5_hash: " . md5($binary_tx) . "\n";
            $text .= "data: {$binary_tx}\n";
            @file_put_contents($file, $text, FILE_APPEND);
        }
        $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\t\t\t\tUPDATE `" . DB_PREFIX . "transactions_status`\n\t\t\t\t\tSET `error` = '" . $db->escape($error) . "'\n\t\t\t\t\tWHERE `hash` = 0x" . md5($binary_tx) . "\n\t\t\t\t\t");
        /*}*/
        //delete_queue_tx();
        //main_unlock();
        //ob_save();
        //sleep(1);
        //return 'continue';
    } else {
        list(, $data_hex) = unpack("H*", $binary_tx);
        list(, $hash_hex) = unpack("H*", $new_tx_data['hash']);
        // счтечик, чтобы не было зацикливания
        $counter = $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\t\t\tSELECT `counter`\n\t\t\t\tFROM `" . DB_PREFIX . "transactions`\n\t\t\t\tWHERE `hash` = 0x{$hash_hex}\n\t\t\t\t", 'fetch_one');
        $counter = intval($counter);
        $counter++;
        $data = "{$hash_hex}\t{$data_hex}\t{$for_self_use}\t{$type}\t{$user_id}\t{$third_var}\t{$counter}";
        $file = save_tmp_644('FTX', $data);
        debug_print($data, __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__);
        // используем REPLACE т.к. тр-ия уже может быть в transactions с verified=0
        $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\t\t\tLOAD DATA LOCAL INFILE  '{$file}'\n\t\t\t\tREPLACE INTO TABLE `" . DB_PREFIX . "transactions`\n\t\t\t\tFIELDS TERMINATED BY '\t'\n\t\t\t\t(@hash, @data, `for_self_use`, `type`, `user_id`, `third_var`, `counter`)\n\t\t\t\tSET `hash` = UNHEX(@hash),\n\t\t\t\t\t   `data` = UNHEX(@data)\n\t\t\t\t");
        unlink($file);
        // удалим тр-ию из очереди
        delete_queue_tx($new_tx_data);
    }
}