Blog. Just Blog

Отправка POST-запроса с помощью file_get_content

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Web-мастеру и не только | Автор: ManHunter
Так уж сложилось, что для отправки запросов на PHP чаще всего используются функции cURL. Действительно, с их помощью можно сформировать практически любой запрос на удаленный или локальный сервер, с любыми параметрами, заголовками и т.п. А функцию file_get_contents() обычно применяют для чтения локальных файлов или для простого захвата содержимого одиночной web-страницы GET-запросом. Но если дополнить функцию file_get_contents правильно настроенным контекстом, то она получает способность также отправлять запросы разных типов и с различными параметрами. Контекст запроса настраивается при помощи функции stream_context_create(). Отправка запроса выполняется по следующей схеме:
  1. // Данные формы для отправки
  2. $form_data=array(
  3.     'login'=>'uzar@example.com',
  4.     'password'=>'supadupapassa',
  5. );
  6. // Настраиваем контекст
  7. $context=stream_context_create(
  8.     array(
  9.         'http'=>array(
  10.             'method'=>'POST',
  11.             'header'=>
  12.                 'Content-Type: application/x-www-form-urlencoded'.PHP_EOL.
  13.                 'Cookie: session_id=123abcdef; utm=example'.PHP_EOL.
  14.                 'User-Agent: Mozilla Interfax',
  15.             'content'=>http_build_query($form_data),
  16.         )
  17.     )
  18. );
  19. // Отправить POST-запрос и получить ответ
  20. $html=file_get_contents('https://example.com/auth.php'false$context);
  21. echo $html;
Настройка заголовков схожа с cURL, но там для этого используется массив, а в контексте это строки, разделенные символом PHP_EOL.

Для отправки запроса на https в настройках PHP должно быть включено расширение php_openssl, иначе функция завершится с ошибкой типа "file_get_contents(): Unable to find the wrapper https".

Поделиться ссылкой ВКонтакте
Просмотров: 662 | Комментариев: 1

Метки: PHP
Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
DiPrm (22.10.2022 в 17:53):
Хорошо помню, что читал эту статью 10 лет назад) Решил поискать, но той страницы уже нет, вновь повеселили каменты той давности.

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

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.06 сек. / MySQL: 2 (0.0044 сек.) / Память: 4.5 Mb
Наверх