Ответы пользователя по тегу PHP
  • Какой самый простой для пользователей вариант управления аватаркой?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Вот неплохой редактор: https://github.com/mosch/react-avatar-editor

    Т.е. делаем UI выбора файла, данные передаем в редактор, на выходе получим blob данные из canvas и их уже можно отправлять на back для записи.
    Ответ написан
    3 комментария
  • Что сделать чтобы composer загружал файлы библиотеки?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Надо чтобы в composer.json присутствовала секция autoload:
    "autoload": {
        "psr-4": {
          "PackageName\\": ""
        }
      },


    И после не забыть запустить composer update чтобы пересобрался vendor/autoload.php
    Ответ написан
  • Как изменить значения массива на основе значений другого массива?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    foreach($array1 as $key => &$value) {
        $value['price'] = $array2[$key]['price'];
    }
    unset($value);
    Ответ написан
    1 комментарий
  • Есть ли утилиты для сравнения и статистики прогресса кодинга без систем контроля версий?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    в phpStorm есть утилита сравнения файлов и директорий, которая насколько я знаю, не использует git для своей работы.
    Ответ написан
    1 комментарий
  • 1c-Биитрикс, SEO модуль, генерация имени файла, альта и тд, что это?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Не знаю, актуально ли еще. Но у меня работает модуль корректно.
    Для ИБ блога, например, настроено вот так:
    E5mdpoJHKYYam1.png
    И в шаблоне соответственно выводится корректно:
    QY2LL4Jt8bbD26.png
    Ответ написан
    Комментировать
  • Битрикс, удалить всплывающее окно при нажатии кнопки купить товар?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Доброго дня!

    Насколько мне известно, настройками компонента этот функционал не настраивается.

    Стандартный комплексный каталог битрикс, в зависимости от настроек, работает так: кнопка называется "Купить" и сразу происходит переход в корзину, где уже будет добавлен этот товар; Или кнопка называется "В корзину" и при клике открывается popup с вариантами "Продолжить покупку" или "Перейти в корзину".

    Часто клиенты просят альтернативный кейс: при нажатии на кнопку "В корзину" текст меняется на "Уже в корзине", при повторном клике происходит переход в корзину. Соответственно, если в шапке сайта есть малая корзина, она должна обновиться ajax. И при повторном открытии страницы (перезагрузке) у данного товара уже должна стоять метка "Уже в корзине" (делается через js скрипт в шаблоне корзины в шапке).

    Нашими специалистами такая доработка может быть сделана за 1-2 часа.

    Если нужна техническая поддержка сайта на Битрикс, всегда рады помочь.
    Обращайтесь на support@bitfactory.ru

    С уважением,
    Олег.
    Ответ написан
    6 комментариев
  • Как реализовать платежную систему на лендинг-пейдж?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    У яндекса несколько больше сервисов для приема платежей, чем касса, вот здесь можно увидеть весь перечень:
    https://money.yandex.ru/get/
    Ответ написан
  • Как вывести на сайт консоль?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Думаю, можно сделать на frontend форму с textarea, стилизовать его под консоль.
    На js ловить нажатие enter и забирать последнюю строчку.
    Отправлять ее ajax'ом на backend.
    А там уже исполнять (php exec) и возвращать ответ.
    Который на js (ajax callback) вставлять дальше в textarea.
    Ответ написан
    Комментировать
  • Как отправить запрос в БД, не обновляя страницу?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Допустим, существует на сайте форма, работает без ajax:
    <form action="" id="test_form">...</form>
    Чтобы она стала работать через ajax, надо на js повесить обработчик события submit, и прерывать в нем событие (методом return false;), вместо чего отправлять запрос средствами js.
    Для простоты и кроссбраузерности можно подключить jquery.
    Тогда появится такой код:
    $(function(){ // DOM ready
    	$('#test_form').submit(function(){
    		$.post(
    			$(this).attr('action'), // url
    			$(this).serializeArray(), // data
    			function(answ) //callback
    			{
    				//...
    			},
    			'html' // answer type (html, text, json, ...)
    		);
    		return false;
    	});
    });

    Дальше уже дело фантазии. Я часто делаю полноценную noajax версию, потом на backend добавляю if (!$_REQUEST['ajax']) { ... } обертки вокруг блоков, которые при ajax отдавать не надо (для экономии передаваемого трафика).

    Чтобы пользователь не спамил запросами на сервер можно ставить индикатор запроса и т.п.
    Ответ написан
  • Как передать куки вторым запросом в cUrl?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Старый код, логинимся и получаем куки в строку:
    // Отправка POST запроса с получением печенек:
    function send_post_get_cookie($URL='', $PostData=Array(), $cookie='')
    {
        // Отсекаем пустые вызовы:
        if (strlen($URL)<=0) return false;
        // Скопировал строку из FireBug:
        $ua = 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 MRA 5.7 (build 03796) Firefox/3.6.13';
        // Инициализация объекта:
        $ch = curl_init($URL);
        // показывать заголовки (в них куки):
        curl_setopt($ch, CURLOPT_HEADER, 1); 
        // не показывать тело страницы (для экономии траффика):
        curl_setopt($ch, CURLOPT_NOBODY, 1); 
        // это чтобы прикинуться браузером:
        curl_setopt($ch, CURLOPT_USERAGENT, $ua);
        // можно ставить еще вот это, если удаленный сервер проверяет:
        // curl_setopt($ch, CURLOPT_REFERER, $URL);
        curl_setopt($ch, CURLOPT_POST, 1);
        // включение полей POST в запрос:
        curl_setopt($ch, CURLOPT_POSTFIELDS, $PostData);
        // если нужны печеньки, установим:
        if (strlen($cookie)>0)
            curl_setopt($ch, CURLOPT_COOKIE, $cookie);
        // тормозим стандартный вывод:
        ob_start();
        // запускаем запрос:
            curl_exec ($ch);
            curl_close ($ch);
            // получаем заголовки в массив:
            $headers = explode("\n", ob_get_contents());
        ob_end_clean();
        // выдираем строку печенек:
        for ($i=0, $cnt=count($headers); $i<$cnt; $i++) 
            if (strpos($headers[$i], 'Set-Cookie:') !== FALSE)
                $cookie .= substr($headers[$i], strpos($headers[$i], 'Set-Cookie:')+strlen('Set-Cookie:')); 
        // и возвращаем результат:
        return $cookie;
    }


    А потом используем ее в других запросах, к примеру загружаем файл после авторизации:
    // Сохранение файла с удаленного хостинга:
    function save_get_file($URL='', $cookie='')
    {
        if (strlen($URL)<=0) return false;
        $filename = $_SERVER['DOCUMENT_ROOT'].'/upload/tmp/'.date('YmdHis_').rand(99,9999999).'.tmp'; 
        $fp = fopen($filename, 'w');
        if (!$fp)
            return false;
        else
        {
            $ua = 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 MRA 5.7 (build 03796) Firefox/3.6.13';
            $ch = curl_init($URL);
            curl_setopt($ch, CURLOPT_USERAGENT, $ua);
            curl_setopt($ch, CURLOPT_FILE, $fp); // чтобы выгрузить в файл;
            if (strlen($cookie)>0)
                curl_setopt($ch, CURLOPT_COOKIE, $cookie);
            curl_exec ($ch);
            curl_close ($ch);
            return $filename;
        }
    }
    Ответ написан
    Комментировать