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

    @rPman
    все зависит от того, как
    любой кто использует мой компьютер может открыть их

    защитить файлы можно правами доступа ОС и не пускать людей за компьютер со своим доступом

    так же можно запускать сервер под правами пользователя, отличными от того под которым используешь комп (создать нового), соответственно выдав права на папку с сайтом на этого пользователя, никто кроме знающего пароль к нему не сможет ихпрочитать
    Ответ написан
    Комментировать
  • Почему код возвращает лишнее?

    @rPman
    Хотя бы для отладки вывел что возвращает тебе ftp_mlsd, 100% все проблемы бы решились сразу.

    Пальцем в небо - в linux каждый каталог содержит два элемента '.' и '..', соответственно текущий и предыдущий каталог, вдруг ftp их возвращает а ты их в файлы записываешь? но тип по уму у них должен быть dir, плюс зациклилось бы все.
    Ответ написан
    Комментировать
  • Нужно ли обрабатывать фатальные ошибки в PHP?

    @rPman
    Если я верно понял вопрос, речь идёт об организации контроля над фатальными ошибками и следующие действия.

    Фатальные ошибки возникают, когда допущена ошибка в коде, например синтаксическая, или необработанные исключения, или неожиданная комбинация данных... в общем произошло то, чего не ждёшь.

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

    Наиболее легко получает народ ошибки такого рода, когда заканчивается место на диске или ram.

    Самое логичное, служба, отвечающая за принятие решения о повторном перезапуске, должна попытаться проверить возможные причины, считать попытки и правильно реагировать. Например у меня одни скрипт при перезапуске по ошибке отправлял мне sms, и какраз место на диске кончилось и он не смог сохранить факт отправки, слал их сотнями.

    Логично предположить, что можно наоборот запретить перезапуск при фатальных ошибках, но тогда нужно значительно увеличивают скорость реагирования на них поддержке, т.е. круглосуточно.

    Очень сложный вопрос м в конце концов упирается в объем ресурсов, которые вы готовы в это вложить.
    Ответ написан
  • Как можно сделать откат и повтор OOP?

    @rPman
    2 основных подхода к реализации отката:
    1. вместо вычислений, на каждом шаге просто добавляете или удаляете описание операций (иногда подойдут обычные замыкания) в специальный массив, реальные вычисления проводите в момент когда запрашивается результат
    2. каждый шаг вычислений сохраняет предыдущее значение в специальном массиве, соответственно откат - это получение этого значения и удаление последнего элемента в масссиве (если не нужен redo)

    Оба подхода имеют свои плюсы и минусы, для простого калькулятора удобнее второй подход, а вот редактора сложного документа - первый.

    Так же возможно сочетание обоих подходов, для оптимизации ресурсов.
    Ответ написан
    Комментировать
  • Как правильно отправлять header, get и post запросы при парсинге, чтобы не банили?

    @rPman
    В общем случае нужно повторять те же запросы и ту же их последовательность, в идеале с правильными таймингами, что делает браузер. Если хотите знать что да как, открываете в браузере хром или фаерфокс нужную страницу, жмете f12, закладка network, выбираете по очереди каждый запрос, правая кнопка, копировать, curl с заголовками и изучаете.

    Понятно что конкретный сервис может не заморачиваться с таким скрупулезным анализом, но что именно будет делать - вопрос исследования.

    Поэтому правильный способ, не пытаться объять необъятное и пользоваться готовым браузером, управляя им со стороны или плагином/инжектом управляющего скрипта прямо на страницу.
    Ответ написан
  • Как поженить php8 и apache24?

    @rPman
    Сообщение об ошибке 'не найден указанный модуль'

    Настраивать вручную apache и php под windows это какая то форма мазохизма да?
    Выбирайте на выбор:

    * cygwin <-- рекомендуется, очень качественно поддерживают весь стек утилит linux, удобный gui
    * msys
    * wsl <-- это вообще linux позволяет запустить почти полноценный да еще и без виртуализации (как wine в linux для windows)
    * поставьте же наконец себе linux в виртуалке, это пара минут шевеления мышкой без каких либо знаний

    А еще можно не ставить apache, особенно если вы туда не лезете и вам нужно просто отлаживать свои скрипты локально, запускайте встроенный в php веб сервер:
    php -S 0.0.0.0:8080
    Ответ написан
    4 комментария
  • Как в классе использовать global?

    @rPman
    global может использоваться только внутри методов или функций, т.е.
    $a = 'test';
    
    class Cls {
    
      public function __construct($a) {
        global $a;
        $this->a = $a;
      }
      public function printer(){
        global $a;
        echo $this->a;
      }
    }
    
    $get = new Cls($a);
    $get->printer();


    Использование global - очень неверная стратегия, и ее нужно избегать всеми силами....

    В крайнем случае используй static (если нужно чтобы переменная была единая для всех экземпляров класса), причем его можно использовать как в пределах описания переменных и методов класса так и внутри функции при определении переменной

    Если прямо надо сильно глобальную переменную и лень писать global в каждом методе, пользуйся функциями, определенных глобально, их будет видно везде. Пример реализации сиквенса:
    function next_seq() {
      static id=0;
      return id++;
    }

    или даже возвращающего целые объекты или массивы
    function yoyo() {
      static $o=false;
      if($o===false) $o=new MyCoolObject();
      return $o;
    }
    использовать:
    yoyo()->myCoolMethod();


    Еще раз глобальная область видимости - бад практикс, везде старайтесь заворачивать весь функционал вокруг класса или хотя бы неймспейса. Это просто как ходить опрятно и не пованивать.
    Ответ написан
    Комментировать
  • Как реализовать поиск массива в массие?

    @rPman
    для этого из $code удаляю по 1 символу
    так заведи еще одну переменную для этого и скопируй туда $code
    Ответ написан
  • Как работает генератор?

    @rPman
    Ответ написан
    Комментировать
  • Как передать несколько параметров одной строкой?

    @rPman
    не надо в value ничего умножать

    несколько input на странице с name="sub_section[]" автоматически будут проанализированы веб сервером и превращены в массив из их value

    p.s. объясните, почему вы в 2021 году используете веб стандарт, который на клиенте работает без javascript? я конечно могу придумать пару применений такому но что то мне подсказывает что это не ваш случай.

    пользуйтесь XMLHttpRequest, он давно уже стандартизирован во всех браузерах, сериализуйте красиво в javascript свои данные и не заморачивайтесь
    Ответ написан
  • Есть и разница между разделителями | и +?

    @rPman
    Если не укажешь дважды один и тот же флаг - то да, проблем не будет, но вы точно уверены что все используемые константы не являются составными флагами и не имеют пересечений по уставленным битам?

    Так что лучше используйте надежный |
    Ответ написан
    Комментировать
  • Как считать nfc метку и передать обработку на веб сервер?

    @rPman
    считываем nfc ридером
    каким именно? он определит то, каким образом вы будете получать эти данные и уже дальше каким способом заливать на сервер

    Если у вас android, то начните работу с этой кнопки
    Ответ написан
    Комментировать
  • Какой бесплатный хостинг с php можно использовать для таких целей?

    @rPman
    Зачем вам mysql? вы же единственный клиент будете?
    p.s. бесплатные без лишних условий это amazon aws free tier, google cloud (для россии под вопросом) или тот же oracle cloud free tier, получаете полноценную vps-ку, с очень медленным процессором, но вам хватит

    Если не жалко заплатить несколько баксов в год, ищите например тут lowendstock.com
    Ответ написан
    Комментировать
  • Можно ли использовать html-код в файле php?

    @rPman
    да можно, php изначально является шаблонизатором:
    <html>
    <body>
    <php if(@_GET['test']) { ?>
    <h1>Yo ho ho!</h1>
    <php }  else { ?>
    <h2>Yay!</h2>
    <php } ?>
    </body>
    </html>


    p.s. пожалуйста, по возможности переносите логику интерфейса на клиента и его javascript, а сервер пусть отвечает за бизнеслогику и данные, так как генерация интерфейса на стороне сервера очень устаревший подход
    Ответ написан
    Комментировать
  • Как быстро получить запись массива?

    @rPman
    var_export

    осторожно с циклическими ссылками

    p.s. на практике для сериализации данных используют serialize/unserialize (свой текстовый формат представления для php) и популярный кроссплатформенный json_encode/json_decode - осторожно, все это текстовые форматы

    настоятельно рекомендую использовать google protobuf, для которого есть реализация для php, удобно быстро эффективно, кросплатформенно и бинарный формат
    Ответ написан
    3 комментария
  • Как на PHP создать свой сервер, чтобы получать данные с Andriod приложения?

    @rPman
    index.php
    <?php
    file_put_contents('mydatabase.serialized',serialized($_POST).nl,FILE_APPEND);
    ?>

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

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

    Использование фреймворков оправдано только если задача, которую они решают совпадает с вашей.
    Ответ написан
    Комментировать
  • При работе одного скрипта ложиться весь сайт, как сделать правильно?

    @rPman
    что значит перестает работать? какую ошибку пишет клиенту?

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

    Однозначно, любой сервер можно 'убить' плохо написанным кодом, ищите проблемы.
    Ответ написан
  • Как лучше сделать свой Интерпретатор или компилятор на php?

    @rPman
    Не буду задавать вопрос зачем заниматься такой херней.

    Советы
    * первое - пили подробное тз, что хочешь получить, какой уровень поддержки команд php, без этого делать что либо запрещается, а точнее адекватного результата точно не получишь
    * второе - пили интерпретатор - это проще в тысячу раз, да медленно, но если задаешь подобные вопросы, остальные варианты скорее всего не для тебя

    Если все же надо быстро и без напряга - пили транслятор в другой язык программирования, например тот же php и исполняй в eval
    Ответ написан
    3 комментария
  • Подключение через прокси?

    @rPman
    Возможность подключаться к https прокси - это фича реализации конкретной http-прокси, т.е. будет зависеть от того какую выбрали (поддержка http connect), само собой в этом режиме кэширования не будет
    Ответ написан
  • Как сделать запрос с передачей header в php?

    @rPman
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($header));
    тут ошибка - это делает запрос POST с полями равными списку ваших заголовков (т.е. это будут уже данные а не заголовки)
    надо
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    Ответ написан
    Комментировать