PHP file_get_contents () und Setze Anforderungsheader



Answers

Hier ist, was für mich funktionierte (Dominic war nur eine Zeile kurz).

$url = "";

$options = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n" .  // check function.stream-context-create on php.net
              "User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.102011-10-16 20:23:10\r\n" // i.e. An iPad 
  )
);

$context = stream_context_create($options);
$file = file_get_contents($url, false, $context);
Question

Mit PHP ist es möglich, HTTP-Header mit file_get_contents() zu senden?

Ich weiß, dass Sie den Benutzeragent aus Ihrer php.ini Datei senden können. HTTP_ACCEPT Sie jedoch auch andere Informationen wie HTTP_ACCEPT , HTTP_ACCEPT_LANGUAGE und HTTP_CONNECTION mit file_get_contents() ?

Oder gibt es eine andere Funktion, die dies erreichen wird?




Die Verwendung der php cURL-Bibliotheken wird wahrscheinlich der richtige Weg sein, da diese Bibliothek mehr Funktionen hat als der einfache file_get_contents(...) .

Ein Beispiel:

<?php
$ch = curl_init();
$headers = array('HTTP_ACCEPT: Something', 'HTTP_ACCEPT_LANGUAGE: fr, en, da, nl', 'HTTP_CONNECTION: Something');

curl_setopt($ch, CURLOPT_URL, "http://localhost"); # URL to post to
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 ); # return into a variable
curl_setopt($ch, CURLOPT_HTTPHEADER, $header ); # custom headers, see above
$result = curl_exec( $ch ); # run!
curl_close($ch);
?>



Wenn Sie HTTPS nicht benötigen und curl auf Ihrem System nicht verfügbar ist, können Sie fsockopen

Diese Funktion öffnet eine Verbindung, von der Sie sowohl lesen als auch schreiben können, wie Sie es mit einem normalen Dateihandle tun würden.




Links