Ответы пользователя по тегу PHP
  • В чем отличие между двумя созданиями объекта?

    ivan_zhuck
    @ivan_zhuck
    В далеком 2010 году перед разработчиками PHP встала задача предоставить поддержку вызова методов и доступа к свойствам созданного объекта одной строкой, поскольку ранее этого делать было нельзя. Также было предложено два варианта синтаксиса new foo->bar() и (new foo())->bar(), из которых был был выбран второй и реализован в 2011 году в PHP 5.4.0. Так что это просто часть синтаксиса языка.

    Подробности: https://wiki.php.net/rfc/instance-method-call
    Ответ написан
    Комментировать
  • Кэшбэк. Как реализовать интеграцию с партнёрскими интернет - магазинами?

    ivan_zhuck
    @ivan_zhuck
    Давайте порассуждаем:

    Интеграцию с партнерским интернет магазином логично разделить на две составляющих:

    1. Фиксация факта, что пользователь пришел из кешбек-сервиса
    2. Передача кешбек-сервису суммы и статуса оплаты заказа из магазина

    Первый пункт решается просто, тут действительно почти всегда используют utm метки и js-скрипт, который их перехватывает и отдает нотификацию серверу кешбек-сервиса о том, что к такому-то партнеру пришел пользователь.

    Второй пункт не так очевиден, и задача выходит за рамки просто программирования, поскольку существует ряд проблем:

    • Сумма заказа иногда включает в себя стоимость доставки на этапе корзины, иногда не включает и рассчитывается вручную магазином (в не зависимости от того распространяется кешбек на доставку или нет, это создает неудобство)
    • Перечень товаров в заказе иногда может быть изменен после оформления (какой-то позиции не оказалось на складе, клиент попросил добавить еще что-то к заказу и т.д.)
    • Оплата не всегда осуществляется сразу, почти все интернет-магазины доставляют товары наложеным платежом или с оплатой курьеру, поэтому существует вероятность отказа от заказа при получении с последующей его отменой
    • И еще куча нюансов связанных с оффлайновыми бизнес-процессами


    Поэтому почти все кешбек-сервисы и CPA-сети предлагают парнерским интернет-магазинам API, куда они могут в автоматическом режиме отправлять информацию об отгруженных и оплаченных заказах. Как правило интеграция с таким API ограничивается разработкой одного метода на стороне партнерского магазина и редко занимает больше часа, под популярные CMS можно сделать плагины для повторного использования.
    Ответ написан
    Комментировать
  • Ошибка функция при переносе сайта на хостинг?

    ivan_zhuck
    @ivan_zhuck
    random_int() доступна только начиная с седьмой версии PHP. Если на хостинге стоит версия ниже, то замените random_int() на rand() с теми же параметрами (стоит учесть что rand не безопасен для криптографических целей).

    Или обновите PHP до версии 7 или выше.

    Или используйте стороннюю библиотеку с реализацией этого функционала, например: https://github.com/paragonie/random_compat
    Ответ написан
    1 комментарий
  • Почему приходят порой пустые заявки?

    ivan_zhuck
    @ivan_zhuck
    Валидация должна быть не только на фронте, но и на беке. Поскольку POST запрос можно отправить не только через форму, но и напрямую, обратившить по адресу обработчика формы. Отправлять такой запрос могут спам-роботы, ушлые пользователи, которые ищут уязвимости и т.д. В самом примитивном случае можно сделать так:

    $name = !empty($_POST['name'])?$_POST['name']:false;
    $phone = !empty($_POST['phone'])?$_POST['phone']:false;
    
    if($name and $phone){
          //тут отправляем форму
    }else{
         //тут сообщаем об ошибке
    }


    В не примитивном случае, должна быть более строгая валидация и в клиентской части приложения и в серверной. Например: в имени могу быть только буквы,пробелы и дефисы, а строка номера телефона после очистки от прочих символов должна содержать 10 числел. Сама форма должна быть защищена от CSRF, XSS и прочих типовых уязвимостей. Если форма публичная (например форма контактов, как в вашем случае) должен присутствовать механизм от защиты отправки формы ботами, например reCAPTCHA.
    Ответ написан
    Комментировать
  • Как убрать уведомление в PHP 7.1?

    ivan_zhuck
    @ivan_zhuck
    Правильно проверять переменные/ключи массивов/свойства объектов на существование с помощью isset() или empty() (если нужно еще и на пустое значение проверить):

    <?= (isset($_POST['user_name'])) ? $_POST['user_name'] : ""; ?>
    Ответ написан
    4 комментария
  • Ошибка выбивает Яндекс.Маркет почему, раньше работал??

    ivan_zhuck
    @ivan_zhuck
    Попробуй удалить вот эту строку:

    print (pack('CCC', 0xef, 0xbb, 0xbf));
    Ответ написан
    1 комментарий
  • Invalid datetime format. Как решить?

    ivan_zhuck
    @ivan_zhuck
    Попробуй написать запрос на вставку так:

    "INSERT INTO tasks (task, date, time) VALUES ('$task', '$date', '$time')"
    Ответ написан
    2 комментария
  • Как вывести данные при помощи RedBeanPHP?

    ivan_zhuck
    @ivan_zhuck
    //используешь getAll для получения результата в виде ассоциативного массива
    $rows = R::getAll("SELECT * FROM tasks");
    foreach( $rows  as  $row){
         //тут выводишь что тебе нужно
    }
    Ответ написан
    Комментировать
  • Построчное формирование xml-файла php?

    ivan_zhuck
    @ivan_zhuck
    Вот есть готовый пример с записью в большой XML-файл частями: https://codeinthehole.com/tips/creating-large-xml-...
    Ответ написан
    2 комментария
  • Какие поставленые задачи junior web dev должен уметь выполнять?

    ivan_zhuck
    @ivan_zhuck
    Junior должен уметь каким-либо образом решать задачи, аля "сделай блог за 15 минут на PHP", "напиши калькулятор на JS".
    Ответ написан
    1 комментарий