2009-09-10 6 views

Antwort

18

Jedes HTTP-Anforderungsheaderfeld befindet sich in $_SERVER (außer Cookie) und der Schlüssel beginnt mit HTTP_. Wenn Sie Apache verwenden, können Sie auch versuchen, apache_request_headers.

+0

Was ist dann mit Cookie-Informationen? Können wir $ _COOKIE [] benutzen, um sie zu holen? –

+1

@dskanth Ja, '$ _COOKIE' enthält die bereits geparsten Cookies, die vom Client gesendet wurden. Aber es wird kein '$ _SERVER ['HTTP_COOKIE']' 'geben. – Gumbo

+0

@Gumbo, Wie ist dieses diff von 'getallheaders'? Gibt es einige Header, die für Letzteres abgestreift werden? – Pacerier

33

Versuchen Sie, diese

print_r ($ _SERVER)

Es alles innerhalb des Arrays

+0

Wenn Sie etwas spezifischeres verwenden möchten: '' – LeRoy

5

Blick auf die $_SERVER Variablenliste zu sehen, was es enthält. Die verlinkte Manualseite hat viele nützliche Informationen, aber auch einfach eine var_dump darauf, um zu sehen, was tatsächlich drin ist. Viele der Einträge werden oder werden nicht ausgefüllt, je nachdem, was der Client vorhat, und seltsame Eigenarten von PHP. Betrachtet man den auf meinem lokalen Server, gibt es auch einen $ _SERVER ["ALL_HTTP"] Eintrag, der sie alle nur als String auflistet, aber anscheinend ist das kein Standard, da er nicht auf der Manpage aufgeführt ist.

19

können Sie getallheaders() verwenden, um ein Array aller gesendeten HTTP-Header zu erhalten.

$headers = getallheaders(); 
foreach($headers as $key=>$val){ 
    echo $key . ': ' . $val . '<br>'; 
} 
5

können Sie einfach apache_request_headers() oder seinen Alias ​​getallheaders() verwenden.

Verbrauch: echo json_encode(getallheaders());

Wenn obige Funktion nicht existiert (alte PHP oder nginx) können Sie diese als Ausweich verwenden:

<?php 
if (!function_exists('getallheaders')){ 
    function getallheaders() { 
     $headers = ''; 
     foreach ($_SERVER as $name => $value) { 
      if (substr($name, 0, 5) == 'HTTP_') { 
       $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; 
      } 
     } 
     return $headers; 
    } 
} 
?> 
0

Sie verwenden apache_request_header können(); kann Ihnen vielleicht helfen.

$headers = apache_request_headers();   
foreach ($headers as $header => $value) { 
echo "<pre>"; 
echo "$header : $value"; 
echo "</pre>"; 
} 
Verwandte Themen