Я использую функцию PHP file_get_contents()
для извлечения содержимого URL, а затем обрабатываю заголовки через переменную $http_response_header
.
Теперь проблема заключается в том, что некоторые URL-адреса нуждаются в данных для публикации на URL-адресе (например, на страницах входа в систему).
Как я могу это сделать?
Я понимаю, что используя stream_context, я могу это сделать, но я не совсем уверен.
Спасибо.
php
http
http-post
file-get-contents
Парас Чопра
источник
источник
Ответы:
На
file_get_contents
самом деле отправка HTTP-запроса POST не так сложна: как вы уже догадались, вам нужно использовать$context
параметр.На этой странице приведен пример, приведенный в руководстве по PHP: параметры контекста HTTP (цитирование) :
По сути, вы должны создать поток с правильными параметрами (на этой странице есть полный список) и использовать его в качестве третьего параметра, чтобы
file_get_contents
- ничего более ;-)Как примечание: вообще говоря, для отправки HTTP-запросов POST мы склонны использовать curl, который предоставляет множество опций, но все - потоки - это одна из приятных вещей PHP, о которой никто не знает ... слишком плохо .. ,
источник
content
не должно быть PHP массив: он должен быть QueryString (т.е. он должен имеет следующий формат:param1=value1¶m2=value2¶m3=value3
) ;; это означает, что вам, вероятно, придется использоватьhttp_build_query($_POST)
$postdata = http_build_query($_POST)
.\r\n
разрывами строк - см .: stackoverflow.com/a/2107792/404960В качестве альтернативы вы также можете использовать fopen
источник
toto=1&tata=2
также. Я не использовалfopen
, однако.источник
file_get_contents
вместоfopen
+stream_get_contents
. И вы даже не закрываете «файл». Смотрите принятый ответ @PascalMARTIN.