Wie bekomme ich einen Header mit Stream?
Posted: 30 Dec 2024, 16:23
Betrachten Sie diese Funktion:
Ich verwende die Funktion folgendermaßen:
Da die Ziel-URL phpinfo ist, kann ich überprüfen, ob $_POST['foo'] auf bar und
< gesetzt ist br />
Der Kontext scheint also gut zu funktionieren, aber wenn ich
verwende
Ich bekomme
Warum ist der Inhaltstyp falsch und HTTP_FOO, das eigentlich ein Header ist, wird hier nicht angezeigt? Die Änderung unten hat auch nicht geholfen. Was soll ich tun? um benutzerdefinierte Header und den richtigen Inhaltstyp zu erhalten?
Ich habe SO gesucht und Folgendes gefunden: Wie bekomme ich HTTP-Antwortheader nach einer POST-Anfrage in PHP? aber wie gesagt, ich habe sowohl stream_get_meta_data($fp) als auch get_headers($url) ausprobiert, aber ich bekomme meine benutzerdefinierten Header nicht. Was soll ich sonst noch tun?
Code: Select all
function use_fopen($url, $make_post_field, $headers = '') {
$context = array(
'http' => array(
'method' => 'POST',
'timeout' => '60',
'content' => $make_post_field)
);
$header = "Content-type: application/x-www-form-urlencoded\r\n";
if (!empty($headers)) {
foreach ($headers as $head) {
$header.="$head\r\n";
}
}
$context['http']['header'] = $header;
$context = stream_context_create($context);
//$contents = @file_get_contents($url, null, $context);
$fp = fopen($url, 'r', false, $context);
$stream_meta_data = @stream_get_meta_data($fp);
print_r($stream_meta_data );
fclose($fp);
}
Code: Select all
$headers = array ('baz: bar');
$data = array ('foo' => 'bar', 'bar' => 'baz');
$data = http_build_query($data);
print(use_fopen("http://www.example.com/phpinfo.php", $data, $headers));
< gesetzt ist br />
Code: Select all
CONTENT_TYPE = application/x-www-form-urlencoded
Code: Select all
HTTP_FOO = baz
Der Kontext scheint also gut zu funktionieren, aber wenn ich
verwende
Code: Select all
$stream_meta_data = @stream_get_meta_data($fp);
print_r($stream_meta_data );
Code: Select all
Array
(
[timed_out] =>
[blocked] => 1
[eof] =>
[wrapper_data] => Array
(
[0] => HTTP/1.1 200 OK
[1] => Date: Tue, 02 Aug 2016 11:46:36 GMT
[2] => Server: Apache
[3] => Connection: close
[4] => Content-Type: text/html; charset=UTF-8
)
[wrapper_type] => http
[stream_type] => tcp_socket/ssl
[mode] => r
[unread_bytes] => 8061
[seekable] =>
[uri] => http://wwwexample.com/phpinfo.php
)
Code: Select all
$contents = @file_get_contents($url, null, $context);
print_r(get_headers($url));