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.             // Настройки для прокси
  12.             'proxy'=>'http://proxy.example.com:8080',
  13.             // Гарантирует, что прокси получит полный URL
  14.             'request_fulluri'=>true,
  15.             'header'=>
  16.                 'Content-Type: application/x-www-form-urlencoded'.PHP_EOL.
  17.                 'Cookie: session_id=123abcdef; utm=example'.PHP_EOL.
  18.                 'User-Agent: Mozilla Interfax',
  19.             'content'=>http_build_query($form_data),
  20.         )
  21.     )
  22. );
  23. // Отправить POST-запрос и получить ответ
  24. $html=file_get_contents('https://example.com/auth.php'false$context);
  25. echo $html;
Настройка заголовков схожа с cURL, но там для этого используется массив, а в контексте это строки, разделенные символом PHP_EOL. При использовании прокси надо учитывать важные моменты. Настраивается proxy и обязательно request_fulluri. Это обязывает передавать прокси полный URI запрос, без этого многие прокси отклонят запрос, ожидая полный URL.

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

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

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

Комментарии

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

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

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

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