Контакты

Достижения

Все достижения (4)

Наибольший вклад в теги

Все теги (17)

Лучшие ответы пользователя

Все ответы (30)
  • Расскажите подробно про php://input, как пользоваться?

    php://input возвращает все необработанные данные после HTTP-заголовков запроса, независимо от типа контента.

    Данные, могут быть:
    • application/x-www-form-urlencoded ( application/x-www-form-urlencoded тип application/x-www-form-urlencoded для простых форм- application/x-www-form-urlencoded ) или
    • multipart/form-data-encoded (в основном multipart/form-data-encoded для загрузки файлов)

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

    Если вы просто отправляете POST-ом обычную HTML-форму, запрос выглядит примерно так:
    POST /page.php HTTP/1.1
    key1=value1&key2=value2&key3=value3

    Но если вы много работаете с Ajax, может понадобиться обмен более сложными данными с типами (строка, int, bool) и структурами (массивы, объекты), поэтому в большинстве случаев JSON является лучшим выбором. Но запрос с JSON-полезной нагрузкой выглядел бы примерно так:
    POST /page.php HTTP/1.1
    {"key1":"value1","key2":"value2","key3":"value3"}

    Теперь содержимое будет application/json (или, по крайней мере, ни один из вышеперечисленных), так что $_POST -wrapper из PHP не знает, как с этим справиться (пока).

    Данные всё еще там, вы просто не можете получить к нему доступ через $_POST. Поэтому вам нужно получить его с "сыром" виде помощью file_get_contents('php://input') (если он не закодирован в формате multipart/form-data).

    Это также способ доступа к XML-данным или любому другому нестандартному типу контента.
    Ответ написан
    Комментировать
  • Как сделать автоматический деплой PHP приложения?

    Нужно попробовать Docker.

    Идеология:
    - делается Dockerfile, который описывает как с нуля развернуть проект и что делать при каждом запуске контейнера (например, почистить кеш и применить миграции). Там всего пару команд надо знать - ADD (добавить файлы), RUN (запустить команду), CMD/ENTRYPOINT (главное приложение контейнера)
    - на hub.docker.com настраивается Automatic build, который по web hook может пинать сервер, что пора забрать новый image. Можно аналогичное сделать с помощью Jenkins или вообще своего скрипта
    - когда серверу говорят, что появился новый image, он его скачивает, останавливает текущий контейнер и быстро запускает новый. Простой - пару секунд. Если это долго, можно запускать новый контейнер, а старый не удалять, перед ними ставить nginx или другой балансер и в нём переключать на новый контейнер, а потом удалять старый.
    Ответ написан
    Комментировать
  • Где найти людей для open-source проекта?

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

    PhpStorm+плагины (тема - Darcula)
    Mercurial + TortoiseHg и Git
    Docker (не надо у себя устанавливать LAMP)
    ConEmu и Putty (если Windows)
    Navicat (или другой удобный phpmyadmin)
    Google Chrome
    Notepad++ (если Windows)
    Evernote (для кусков кода и скриптов)
    PHP (для запуска мелких скриптов)
    Composer
    Filezilla
    Microsoft Office / Google Docs
    Pocket (для сохранения статей с Хабра)
    Foobar (музыка)
    f.lux (чтобы не уставали глаза вечером)
    PuntoSwitcher
    Ответ написан
    Комментировать
  • С чего начать при изучении symfony с нуля?

    Официальная документация Symfony очень хорошая.
    Если на английском сложно читать, вот перевод на русский
    https://symfony.com.ua
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (1)