PHP file_get_contents() y configuración de encabezados de solicitud
Con PHP, ¿es posible enviar encabezados HTTP con file_get_contents()
?
Sé que puedes enviar el agente de usuario desde tu php.ini
archivo. Sin embargo, ¿también puedes enviar otra información como HTTP_ACCEPT
, HTTP_ACCEPT_LANGUAGE
, y HTTP_CONNECTION
con file_get_contents()
?
¿O hay otra función que logre esto?
Aceptado
En realidad, después de leer más sobre la file_get_contents()
función:
// Create a stream
$opts = [
"http" => [
"method" => "GET",
"header" => "Accept-language: en\r\n" .
"Cookie: foo=bar\r\n"
]
];
// DOCS: https://www.php.net/manual/en/function.stream-context-create.php
$context = stream_context_create($opts);
// Open the file using the HTTP headers set above
// DOCS: https://www.php.net/manual/en/function.file-get-contents.php
$file = file_get_contents('http://www.example.com/', false, $context);
Es posible que puedas seguir este patrón para lograr lo que buscas; aunque no lo he probado personalmente. (y si no funciona, no dudes en consultar mi otra respuesta)
Esto es lo que funcionó para mí (a Dominic le faltaba solo una línea).
$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);
Puede utilizar esta variable para recuperar encabezados de respuesta después de file_get_contents()
la función.
Código:
file_get_contents("http://example.com");
var_dump($http_response_header);
Producción:
array(9) {
[0]=>
string(15) "HTTP/1.1 200 OK"
[1]=>
string(35) "Date: Sat, 12 Apr 2008 17:30:38 GMT"
[2]=>
string(29) "Server: Apache/2.2.3 (CentOS)"
[3]=>
string(44) "Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT"
[4]=>
string(27) "ETag: "280100-1b6-80bfd280""
[5]=>
string(20) "Accept-Ranges: bytes"
[6]=>
string(19) "Content-Length: 438"
[7]=>
string(17) "Connection: close"
[8]=>
string(38) "Content-Type: text/html; charset=UTF-8"
}