Михаил Воронов
Профессиональный веб-разработчик

Преимущества работы со мной

  • Соблюдение сроков
  • Чистый и понятный код
  • Продуманная наперёд логика
  • Бесплатные доработки в рамках ТЗ

Список используемых технологий

  • PHP (MVC), MySQL, HTML (Twig), CSS (Bootstrap), JavaScript (jQuery)
  • CURL, XPath, PhantomJS, Proxy, AntiCaptcha
  • DLE, OpenCart / ocStore
  • API (REST, SOAP)

Перечень оказываемых услуг

  • Доработка сайтов на DLE и OpenCart
  • Разработка модулей для DLE и OpenCart
  • Интеграция готового дизайна / вёрстки в DLE или OpenCart
  • Разработка калькуляторов
  • Разработка парсеров
  • Подключение и настройка API
  • Автоматизация рутинных процессов

Примеры кода

HTML
CSS
JS
PHP
<!DOCTYPE html>
<html lang="ru">
    <head>
        <title>Курс рубля по отношению к выбранной валюте</title>

        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        <link rel="stylesheet" href="./common.css">
    </head>
    <body>
        <p>Выберите валюту и нажмите на кнопку:</p>
        <p>
            <select name="currency">
                <option value="">---</option>
                <option value="AUD">Австралийский доллар</option>
                <option value="AZN">Азербайджанский манат</option>
                <option value="GBP">Фунт стерлингов Соединенного королевства</option>
                <option value="AMD">Армянских драмов</option>
                <option value="BYN">Белорусский рубль</option>
                <option value="BGN">Болгарский лев</option>
                <option value="BRL">Бразильский реал</option>
                <option value="HUF">Венгерских форинтов</option>
                <option value="HKD">Гонконгских долларов</option>
                <option value="DKK">Датских крон</option>
                <option value="USD">Доллар США</option>
                <option value="EUR">Евро</option>
                <option value="INR">Индийских рупий</option>
                <option value="KZT">Казахстанских тенге</option>
                <option value="CAD">Канадский доллар</option>
                <option value="KGS">Киргизских сомов</option>
                <option value="CNY">Китайских юаней</option>
                <option value="MDL">Молдавских леев</option>
                <option value="NOK">Норвежских крон</option>
                <option value="PLN">Польский злотый</option>
                <option value="RON">Румынский лей</option>
                <option value="XDR">СДР (специальные права заимствования)</option>
                <option value="SGD">Сингапурский доллар</option>
                <option value="TJS">Таджикских сомони</option>
                <option value="TRY">Турецкая лира</option>
                <option value="TMT">Новый туркменский манат</option>
                <option value="UZS">Узбекских сумов</option>
                <option value="UAH">Украинских гривен</option>
                <option value="CZK">Чешских крон</option>
                <option value="SEK">Шведских крон</option>
                <option value="CHF">Швейцарский франк</option>
                <option value="ZAR">Южноафриканских рэндов</option>
                <option value="KRW">Вон Республики Корея</option>
                <option value="JPY">Японских иен</option>
            </select>
            = <span id="rub_value">???</span> RUB
        </p>
        <p><button type="button" name="get_course">Получить курс</button></p>

        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script src="./function.js"></script>
    </body>
</html>
@import url('https://fonts.googleapis.com/css?family=Roboto:400,700');

body {
    margin: 0;
    padding: 10px 20px;
    font-family: Roboto, Arial, sans-serif;
    font-size: 14px;
    line-height: 19px;
}
p {
    margin: 10px 0;
}
select {
    width: 190px;
}
button {
    margin-top: 5px;
}
$('button[name="get_course"]').on('click', function() {
    var currency = $('select[name="currency"]').val();
    
    if (!currency) {
        alert('Выберите валюту.');
    } else {
        $('#rub_value').text('???');
        $('button[name="get_course"]')
            .attr('disabled', 'disabled')
            .data('text', $('button[name="get_course"]').text())
            .text('Выполняем...');
        
        $.get('./get_course.php', {'currency': currency}, function(result) {
            if (result.error) {
                alert(result.error);
            } else {
                $('#rub_value').text(result.data);
            }
        }, 'json');
        
        $('button[name="get_course"]')
            .removeAttr('disabled')
            .text($('button[name="get_course"]').data('text'));
    }
});
<?php

/**
* Get content by cURL
* 
* @param string $url
* 
* @return string | null
*/
function getContent($url)
{
    $curl_opts = [
        CURLOPT_URL => $url,
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_CONNECTTIMEOUT => 10,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_RETURNTRANSFER => true
    ];
    
    $ch = curl_init();
    curl_setopt_array($ch, $curl_opts);
    $content = curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if ($http_code != '200') {
        $content = null;
    }
    
    return $content;
}

$output = [];
$currency = !empty($_GET['currency']) ? $_GET['currency'] : '';

if (!$currency) {
    $output['error'] = 'Валюта не выбрана.';
} else {
    $data = getContent('http://www.cbr.ru/scripts/XML_daily.asp?date_req=' . date('d/m/Y'));

    if (!$data) {
        $output['error'] = 'Данные не могут быть получены, повторите попытку позднее.';
    } else {
        $xml = simplexml_load_string($data);
        
        foreach ($xml->Valute as $valute) {
            if ($valute->CharCode == $currency) {
                $value = (float)str_replace(',', '.', $valute->Value);
                $value = round($value, 2);
                $output['data'] = str_replace('.', ',', $value);
                
                break;
            }
        }
        
        if (!isset($output['data'])) {
            $output['error'] = 'Валюта не найдена.';
        }
    }
}

echo json_encode($output);

Данный код получает текущий курс рубля по отношению к выбранной валюте, используя XML-API ЦБ РФ.
Демо-версия примера доступна по ссылке https://voronoff.name/demo/index.html

Портфолио

Интерфейс для автоматизации действий в системе МойСклад
Интерфейс для автоматизации действий в системе МойСклад
RetailCRM - создание заказа
RetailCRM - создание заказа
Модуль дропшиппинга для OpenCart
Модуль дропшиппинга для OpenCart
Фильтр по категориям, тегам и дополнительным полям (DLE)
Фильтр по категориям, тегам и дополнительным полям (DLE)
Смотреть все работы

Полезная информация

  • Стоимость часа работы: 1 000 ₽
  • Принимаю к оплате
    • Сбербанк (MasterCard)
    • Яндекс.Деньги
    • Webmoney

Контакты