Как получить данные post запроса php
Перейти к содержимому

Как получить данные post запроса php

  • автор:

POST-запрос через file_get_content()

Функция file_get_contents($filename) — читает содержимое файла в строку, если в $filename указать URL, то функция попытается получить содержимое веб-станицы GET-запросом.

echo file_get_contents('https://example.com');

Отправка POST-запроса

Чтобы отправить POST-запрос достаточно дополнительно отправить HTTP-заголовки с помощью функции stream_context_create(), в параметре $context функции file_get_contents() :

$post = array( 'name' => 'Alex', 'email' => 'mail@example.com' ); $headers = stream_context_create( array( 'http' => array( 'method' => 'POST', 'header' => 'Content-Type: application/x-www-form-urlencoded', 'content' => http_build_query($post), ) ) ); echo file_get_contents('https://example.com', false, $headers);

Отправка cookie

Куки передаются заголовком «Cookie», содержащий пары ключ=значение , разделенные « ; ».

$post = array( 'name' => 'Alex', 'email' => 'mail@example.com' ); $headers = stream_context_create( array( 'http' => array( 'method' => 'POST', 'header' => 'Content-Type: application/x-www-form-urlencoded' . PHP_EOL . 'Cookie: user=admin; pass=123456', 'content' => http_build_query($post), ) ) ); echo file_get_contents('https://example.com', false, $headers);

POST-запрос с авторизацией

Если запрашиваемая страница закрыта базовой HTTP-аутентификацией, то можно отправить логин и пароль заголовком « Authorization: Basic . ».

$auth = base64_encode('user:password'); $post = array( 'name' => 'Alex', 'email' => 'mail@example.com' ); $headers = stream_context_create( array( 'http' => array( 'method' => 'POST', 'header' => 'Content-Type: application/x-www-form-urlencoded' . PHP_EOL . 'Authorization: Basic ' . $auth, 'content' => http_build_query($post), ) ) ); echo file_get_contents('https://example.com', false, $headers);

Для протокола OAuth используются заголовки Authorization: OAuth ТОКЕН или Authorization: Bearer ТОКЕН .

Как отправтиь POST-запрос в PHP?

Самый простой способ сделать POST-запрос это воспользоваться библиотекой cURL.

Простой пример запроса:

 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.example.com/api/resource"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "name=value"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $output = curl_exec($ch); curl_close($ch); echo $output; ?> 

Здесь Как работает cURL в PHP? можно посмотреть как делать запросы в cURL-е.

Как получить строку из POST-запроса на php?

Как следует из документации платёжной системы, страница получает уведомление через $_POST, которое содержит json-строку вида: <"id":"fb4def00b68d9bd805c160db1993de7d1ed7579f","status":"accepted_successed","message":"","amount":"542.0", "old_amount": "1000.0">У меня не выходит получить эту строку! Логирую содержимое POST-запросов с получением содержимого функциями var_dump($_POST) и print_r($_POST); в итоге пусто. Содержимое $_POST тоже пустое. Как получить строку из $_POST в PHP? Логировал следующим образом:

if (!empty($_POST))

Post и GET в PHP

Post и GET в PHP

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

Сам язык и его интерпретатор под названием Zend Engine разрабатываются группой свободных разработчиков. Этот проект имеет открытый исходный код. Он наделен собственной лицензией, которая не совместима с GNU GPL.

При написании скриптов для обработки форм необходимо использовать метод POST в PHP. Далее он будет рассмотрен более подробно. Эта информация пригодится как новичкам, так и более опытным разработчикам. Дополнительно предстоит изучить метод запроса GET.

Клиент-серверная архитектура

Web базируется на простейшей клиент-серверной архитектуре. Она работает так:

Post и GET в PHP

  1. Клиент (обычно им выступает веб-браузер) формирует и отправляет запрос на сервер.
  2. В качестве сервера выступают различные веб-серверы: IIS, Apache, Tomcat и другие.
  3. Для передачи PHP запроса используется протокол HTTP.
  4. Сервер получает команду от клиента, обрабатывает ее.
  5. Происходит передача ответа клиенту по аналогичному протоколу.

Выше – пример организации простейшей клиент-серверной модели. Со стороны клиента обычно используется HTML форма. Такое название получил удобный способ настройки и отправки HTTP-запроса для отправки информации на серверную часть.

Определение способа отправки данных

Элемент на PHP-сайте отвечает за метод отправки данных. Все его атрибуты используются для того, чтобы можно быстро настроить запрос на отправку. Происходит это при нажатии на специальную кнопку. Пример – «Отправить». Наиболее важными атрибутами служат:

Они должны быть изучены PHP разработчиками перед тем как рассматривать POST и GET.

Атрибут action

Action – параметр, который определяет, куда необходимо отправить данные. Его значение – это актуальный URL-адрес. Если соответствующий атрибут отсутствует, информация передается на URL-адрес страницы, в которой размещается форма.

Post и GET в PHP

Выше – пример работы с абсолютным URL. А вот – пример использования относительного веб-адреса. Информация будет передаваться на другой URL в пределах сервера:

Post и GET в PHP

Большинство старых веб-страниц, написанных на PHP и других языках, используют такую форму синтаксиса:

Post и GET в PHP

Она указывает на то, что информация должна быть направлена на страницу с формой. Связано это с тем, что до HTML5 атрибут action являлся обязательным. Современные PHP сайты избавлены от необходимости использования соответствующего параметра.

Атрибут method

Methods используется для определения способа, которым осуществляется передача информации. Протоколы HTTP позволяют выполнить операцию несколькими способами:

  • через GET;
  • при помощи метода, name POST.

Каждый раз, когда пользователь хочет получить доступ к ресурсу в Сети, браузер будет отправлять requests на name URL (адрес веб-страницы). HTTP request включает в себя две части: заголовок, включающий в себя набор глобальных метаданных о возможностях интернет-обозревателя, а также тела. В нем может содержаться информация, необходимая серверу для обработки конкретной команды.

Метод GET

Method name GET поддерживает передачу параметров с предыдущей страницы на следующую в составе строки запроса, представленной в формате универсального идентификаторы URL-ресурса. При его использовании для обработки form method к веб-адресу, обозначенному через атрибут action, после разделителя необходимо добавить в виде вопросительного знака указанное имя (name) и значения переменной. После этого вся строка передается обрабатывающему агенту. В случае с PHP и веб-страницами – веб-серверу.

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

Post и GET в PHP

Выше – пример работы соответствующего элемента. После нажатия пользователем на кнопку с name «Отправить», браузер соединит перечисленные далее компоненты в указанном порядке. Пробелов между ними не будет:

Post и GET в PHP

  • URL в кавычках, который идет после слова action;
  • знак вопроса, указывающий на то, что остальные символы формируют GET-строку;
  • переменная name и знак равенства, а также параметр value;
  • амперсанд и пара name = value.

Браузер сформирует строчку, указанную выше. Далее он перенаправит ее в пределах собственного адресного пространства в виде нового запроса. Так выглядит PHP сценарий:

Post и GET в PHP

А вот – наглядный пример того, как обрабатывается форма:

Post и GET в PHP

Обработчик форм получит доступ к каждому передаваемому через GET-метод компоненту при помощи обращения к массиву $_Get.

А вот еще один пример:

Post и GET в PHP

За счет использования request name GET, в адресной строке браузера появится URL-адрес. Здесь информация добавляется в качестве последовательности пар name/значение. HTTP-запрос будет выглядеть так:

Post и GET в PHP

Здесь на сервер передаются части информации на сервер: say со значением Hi, а также to с параметром Mom.

Особенности Get

Если данные формы передаются через метод with name GET, необходимо запомнить следующее:

  • данный метод не может быть применим для создания регистрационных форм;
  • каждая операция передачи информации, включая исходные данные, регистрируется в журнале веб-сервера;
  • GET не поддерживает присваивание информации переменной среды сервера, поэтому длина URL имеет ограничения.

Второй способ передачи данных на PHP сайте – это method POST.

Работа с POST

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

Браузеры используют method name POST PHP для связи с сервером при запросе ответа с учетом информации, написанной в теле HTTP-запроса. If форма отправляется через posted, данные будут добавлены в тело HTTP-запроса. URL-строка не будет подвергаться видимым изменениям.

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

Post и GET в PHP

Когда форма отправляется через соответствующий метод, сведения будут добавлены не в URL-адресе. Набор переданных данных можно найти в теле HTTP-запроса:

Post и GET в PHP

Заголовок с name Content-Length задает размер тела, а Content-Type отвечает за тип отправляемых сведений на сервер.

Для создания PHP request типа POST, можно использовать несколько подходов:

  • через file_get_contents;
  • при помощи fread с другими функциями.

Оба варианта используют stream context create для выполнения необходимых полей заголовка.

Применение file_get

В PHP отправить данные через POST можно посредством file_get_contents. Stream context create в этом случае предстоит применять для того, чтобы вручную заполнять заголовки и указывать тип содержимого (а именно – HTTP):

Post и GET в PHP

Выше – наглядный пример того, как выглядит исходный код при реализации рассматриваемого приема.

Использование fread

Чтобы выполнить метод name POST, можно использовать функцию fread. Здесь stream context create применяется для того, чтобы составить заголовки HTTP-запросов:

Post и GET в PHP

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

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

Post и GET в PHP

Здесь при обработке изучаемой команды последний аргумент функции fread будет равен размеру фрагмента. Он не должен превышать 8 192 (8*1 024).

Просмотр HTTP-запроса

При работе с запросами name HTTP стоит обратить внимание на то, что они никогда не демонстрируются пользователям. Сведения форм обычно отображаются через специальные дополнительные инструменты – Chrome Developer Tools, FireFox Network Monitor и другие.

В Google Chrome submit сведения форм показываются во вкладке «Сеть». Чтобы их увидеть, необходимо:

  1. Нажать на F12.
  2. Перейти в Network.
  3. Щелкнуть по «All», а затем в разделе Name выбрать сайт. В рассматриваемых случаях – это foo.com.
  4. Кликнуть по «Headers».

Пользователи увидят вызываемый URL name. Запросы GET дадут возможность увидеть сведения в адресе. Если использовался POST, они не отобразятся. Знать об этом необходимо по нескольким причинам:

  1. Когда требуется отправить пароль или иные важные сведения, нельзя использовать GET. Это связано с безопасностью.
  2. При отправке большого документа, рекомендуется задействовать POST.

Когда сведения отправлены, остается получить их.

Серверная сторона – получение

Независимо от выбранного HTTP, сервер вернет input type (строку) в виде листа с параметрами ключ/значение. Получение доступа к нему зависит от платформы разработки и особенностей применяемых фреймворков. Наиболее распространенный вариант – это чистый PHP.

В соответствующем языке имеются различные объекты для доступа к сведениям. Пример – при применении POST-метода информация просто выдается пользователю. Дальнейшая ее судьба определяется каждым отдельным человеком.

Post и GET в PHP

При обработке фрагмента кода на экране появится следующее:

Post и GET в PHP

Здесь будет показана страничка с отправленными сведениями. Когда они переданы на отправку, информация переходит в форму php-example.php. В ней содержится код, представленный выше.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *