Как публиковать данные в PHP с помощью file_get_contents?

Я использую функцию PHP file_get_contents() для извлечения содержимого URL-адреса, а затем обрабатываю заголовки через переменную $http_response_header .

Теперь проблема в том, что некоторым URL-адресам нужны некоторые данные, которые должны быть отправлены на URL-адрес (например, страницы входа).

Как мне это сделать?

Я понимаю, используя stream_context, я могу это сделать, но я не совсем понятен.

Благодарю.

Solutions Collecting From Web of "Как публиковать данные в PHP с помощью file_get_contents?"

Отправка HTTP-запроса POST с использованием file_get_contents не так уж и трудна, на самом деле: как вы уже догадались, вам нужно использовать параметр $context .

Вот пример, приведенный в руководстве по PHP, на этой странице: параметры контекста HTTP (цитирование) :

 $postdata = http_build_query( array( 'var1' => 'some content', 'var2' => 'doh' ) ); $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $postdata ) ); $context = stream_context_create($opts); $result = file_get_contents('http://example.com/submit.php', false, $context); 

В принципе, вам нужно создать поток с правильными параметрами (есть полный список на этой странице) и использовать его в качестве третьего параметра для file_get_contents – ничего более 😉

В качестве побочного элемента: вообще говоря, для отправки запросов HTTP POST мы склонны использовать завиток, который предоставляет множество опций все, но потоки – одна из хороших вещей PHP, о которых никто не знает … слишком плохо .. ,

Альтернатива, вы также можете использовать fopen

 $params = array('http' => array( 'method' => 'POST', 'content' => 'toto=1&tata=2' )); $ctx = stream_context_create($params); $fp = @fopen($sUrl, 'rb', false, $ctx); if (!$fp) { throw new Exception("Problem with $sUrl, $php_errormsg"); } $response = @stream_get_contents($fp); if ($response === false) { throw new Exception("Problem reading data from $sUrl, $php_errormsg"); } 
 $sUrl = 'http://www.linktopage.com/login/'; $params = array('http' => array( 'method' => 'POST', 'content' => 'username=admin195&password=d123456789' )); $ctx = stream_context_create($params); $fp = @fopen($sUrl, 'rb', false, $ctx); if (!$fp) { throw new Exception("Problem with $sUrl, $php_errormsg"); } $response = @stream_get_contents($fp); if ($response === false) { throw new Exception("Problem reading data from $sUrl, $php_errormsg"); }