Ответы пользователя по тегу PHP
  • Почему выходит ошибка в PHPMailer?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    • Может что-то не так быть с роутингом.
    • У хостера может быть заблокирован SMTP
    • У mail.ru может быть заблокирован диапазон IP обслуживающийся вашим хостером
    • У вас в файрволе может быть заблокирован такой исходящий трафик

    Это только часть потенциально возможных проблем.

    Попробуйте развернуть пойманное исключение, посмотреть вложено ли в него более низкоуровневое исключение и вытащить данные из него - может быть ещё что-то полезное узнаете.
    Ответ написан
    2 комментария
  • Почему нет подключения к веб сокетам?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    var conn = new WebSocket('wss://site.ex/8777');
    А вы уверены, что порт нужно указывать именно так?
    Ответ написан
    4 комментария
  • PHP NODEJS откуда такая ощутимая разница в скорости работы?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    А вы сравнивали код на node.js с кодом на PHP в стиле request-response-death или Event Loop?
    Потому что в node.js-то у вас, скорее всего, код был написан по другой парадигме.
    Ответ написан
    Комментировать
  • Скрипт онлайн-читалки, где взять?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Можно использовать сервис типа: omnireader.ru
    Ответ написан
    Комментировать
  • Как работать с PDO внутри класса?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    У вас внутри конструктора есть вот эта строчка:
    $pdo = new PDO($this->dsn, $this->user, $this->password, $this->opt);

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

    В методе SELECT:
    public function SELECT($Query) {
            $stmt = $pdo->query("$Query");
        }

    Вы обращаетесь к переменной, которая как бы существует только в скоупе этого метода (на самом деле, её нет). Естественно, что ничего не работает.

    Вам нужно:
    1. Создать свойство, в котором будет храниться после инициализации в конструкторе объект PDO у вашего недоабстрактного класса DB
    2. В методе SELECT обращаться к этому объекту как к $this->pdo (или как вы его назовёте)


    Почитайте про скоупы переменных. А ещё про ООП и области видимости. И не лепите protected для всего, что под руку попадётся. Вполне вероятно, что в наследниках вам нужен доступ только к SELECT(), а свойство содержащее объект PDO и остальные не нужны. В этом плане можете ещё про deffensive programming (пример).

    P.S. Вам, кстати, эта толпа свойств dsn, user, password, opt и прочие, скорее всего не нужны после инициализации PDO. Вполне вероятно, что можно их не сохранять вообще.
    Ответ написан
    2 комментария
  • Как сформировать XML в SOAP на PHP?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Комментировать
  • Как объединить PHP + Socket.io?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Ну вам же написали: "only run in command line mode".

    Запускайте воркер в CLI и всё будет работать.

    Для этого, как, надеюсь, вы понимаете, требуется воркер запускать не в контекте обработки запроса из браузера, а отдельно.
    Ответ написан
    Комментировать
  • Как можно узнать модули, имея php код?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Можно использовать анализаторы типа такого:
    https://github.com/wapmorgan/PhpCodeAnalyzer

    И вот ещё список: https://github.com/exakat/php-static-analysis-tools

    Если же под модулями вы имеете в виду библиотеки, то скорее всего с проектом идёт файл composer.json, который предназначен для менеджера зависимостей Composer, которым вы можете установить всё, что нужно.
    Ответ написан
    Комментировать
  • В чём ошибка, php при получении данных?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Используйте XDebug.
    Ответ написан
    2 комментария
  • Как из адресной строки вытащить из url нужное значение?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    lmgtfy.com/?q=php+routing

    Конкретные примеры:
    Symfony Routing (см. "placeholders")
    PhpLeague Route (см. "Wildcard Routes")
    Aura.Router

    В вашем случае должен быть определён маршрут типа:
    /{city_name}/products (это на примере Symfony Routing, в других смысл радикально отличаться не будет)

    Далее в случае попадания запроса на этот маршрут вы передаёте нужному контроллеру данные - в данном случае значение параметра city_name и там уже работает логика связанная с обработкой разных городов.
    Ответ написан
    Комментировать
  • Как разобраться с сессиями и массивами в php?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Разбивайте задачу на подзадачи и вам станет легче разбираться с тем как решать каждую из них.

    Например вместо:
    • Записать в сессию какую кнопку нажал пользователь (на самом деле, вы хотите этого, а не то, что написали, судя по всему).

    Поставить задачи так:
    • Определить как пользователь будет выбирать рейсы на HTML-странице (заметьте, здесь никаких сессий, всё в контексте исключительно HTML-страницы в браузере пользователя). Здесь вы выберете какие HTML-элементы будете использовать в форме: выпадающий список, радиобаттон или чекбоксы.
    • Понять каким образом из формы в HTML-странице формируются значения для передачи на сервер. Здесь вы разбираетесь с тем, у каких элементов где value, понимаете для чего нужен атрибут name и т.д.
    • Разобраться как данные передаются из браузера при отправке формы на сервер (в PHP). Здесь вы узнаете про то, что у формы есть атрибут action, что бывают методы GET и POST (а на самом деле, их больше, но это сейчас неважно). Потом (именно потом!) можно ещё узнать про AJAX и запросы из JavaScript без перехода на другую страницу.
    • Научиться правильно обрабатывать входящие данные POST-запроса. Здесь вы разбираетесь с суперглобальными массивами, с функциями фильтрации и валидации в PHP вроде filter_input() и подобных. (на следующих итерациях решения подобной задачи можно попробовать для разнообразия добраться до вещей типа symfony/http-foundation)
    • Разобраться, где какие данные лучше сохранять между разными запросами. Здесь вы почитаете про сессии, про базу данных и в чём их плюсы и минусы (а точнее для каких целей их используют). Возможно ещё про что-то типа Memcached/Redis, но явно не в первые разы.
    • Научиться работать с выбранных под вашу цель хранилищем данных. Здесь вы поймёте как "положить" в ваше хранилище (будь то сессия или БД) то, что вы "вынули" из запроса, который пришёл из браузера.


    Все пункты "научиться", "разобраться", "понять" по большему счёту нужно будет делать по одному разу на каждую нетипичную задачу. Но если вы вместо комплексного восприятия "сделать хорошо" начнёте разбираться в том, что стоит за технологией, на которой вы пытаетесь разрабатывать - вы начнёте действительно учиться.
    А такие вот вопросы "как мне сделать вот именно это" - они просто научат вас повторять код за людьми с Toster или StackOverflow без понимания, что они делают.

    Так что разбирайтесь с тем, как работает веб в принципе: что такое HTML и что выполняется в браузере, что такое PHP и что выполняется на сервере, как браузер отправляет данные на сервер и т.д., и т.п.
    В итоге вы должны полностью понимать принцип работы вашей страницы и пути по которым передаются данные от того момента как страница генерируется до того момента, когда вы обработали форму полученную от пользователя и выдали ему сообщение об успехе или ошибке.
    Ответ написан
    Комментировать
  • Зависает процесс php из командной строки, что сделать?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Можно попробовать выполнить его с дебаггером (xdebug) или профайлером и посмотреть на чём он залипает.
    Можно снаружи подцепиться к нему, например, strace и посмотреть какие системные вызовы он делает.
    Ответ написан
  • Как через PHP определить, что мой телефон подключился к моей WIFI сети?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    - Достать с DHCP-сервера список лизов адресов и найти там MAC-адрес телефона
    - С самого телефона при подключении к домашней сети отправлять команду на сервер умного дома (в части случаев более гибкий вариант)

    Первые варианты приходящие в голову.
    Ответ написан
    Комментировать
  • Какой опцией на сервере управляется длина GET параметра?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    https://stackoverflow.com/a/7725515

    А ещё может обрезаться на уровне Nginx, например.
    Ответ написан
    Комментировать
  • Как отправить значения из input на почту?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    function send_form($message) {
      
        $mail_to = "Irtg@yandex.ru.ru"; // Адрес, куда отправляем письма
        $headers = "MIME-Version: 1.0rn";
        $headers .= "Content-type: text/html; charset=utf-8rn";
        $headers .= "From: ".$subject." <no-reply@".$_SERVER['HTTP_HOST'].">rn";
        mail($mail_to, $subject, $message, $headers);
        
      }


    Посмотрите на этот код и подумайте, откуда в скоупе функции send_form() возьмётся переменная $subject. А ещё посмотрите, что в итоге у вас получается в строке $headers, насколько валидно это значение (например, отсутствия точек с запятой, непонятные "rn") и подумайте, зачем вы всё это туда кладёте.

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

    Потом найдите в коде место, где вы вызываете функцию, которая должна отправлять сообщение.

    P.S. Потом, когда разберётесь, что именно сделали не так, исправите код и он заработает, идите на https://www.phptherightway.com/ (там есть русская версия, но лучше читать оригинал) и изучайте хорошие практики написания.
    Ответ написан
    Комментировать
  • Как написать обработчик для этих зачений?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Никак. Здесь ничего не отправляется из формы. У вас даже кнопка отправки формы некорректная.

    Начните с изучения HTML чтобы понять, какие элементы (а точнее, какие атрибуты или содержимое каких элементов) отправляются на сервер при отправке формы.

    Если же вы пытаетесь отправить данные через AJAX, то разбирайтесь с JavaScript.
    Ответ написан
  • Как можно превращать верстку в png?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Как обходной вариант - можно сгенерировать PDF и ImageMagick/GraphicsMagick перегнать PDF в PNG.
    Ответ написан
    Комментировать
  • Получить количество сидов/пиров торрента?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Это не такая простая задача как может показаться.
    Во-первых, раздача может быть без трекера. Во-вторых, если там трекер есть - он может показывать не всех пиров для неё.
    Наиболее правильным (в плане отображения корректных значений) решением было бы при наличии трекера спросить список пиров у него, а потом дополнить этот список результатом опроса по DHT. Но это уже значительно более долгая и гораздо менее тривиальная нежели GET-запрос задача. Тут уже придётся работать с протоколом BitTorrent.
    Кстати, анонсер может работать и не по HTTP. Так что даже если отбросить уточнение по DHT может быть мало одного GET.
    Ответ написан
  • Получение последней строки из mysql redbeanphp?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Ответ написан
    Комментировать
  • Как использовать Telegram Bot API и MTProxy?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Telegram Bot API не имеет никакого отношения к MTProto. Оно работает по HTTP. И, соответственно, MTProto proxy к нему не применим.
    Ответ написан
    Комментировать