web-dev-qa-db-ja.com

ブラウザから受け取ったヘッダーを表示するために、どうすればPHPを取得できますか?

それらはすべて$_SERVERに保存されていますか?カスタムのものでも?

32
tehryan

これを試して

print_r($ _ SERVER)

配列内のすべてをリストします

37

getallheaders() を使用して、送信されたすべてのHTTPヘッダーの配列を取得できます。

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

すべてのHTTP要求ヘッダーフィールドは$_SERVERCookieを除く)にあり、キーはHTTP_で始まります。 Apacheを使用している場合は、 Apache_request_headers を試すこともできます。

21
Gumbo

Apache_request_headers() またはそのエイリアス getallheaders() を使用するだけです。

使用法:echo json_encode(getallheaders());

上記の関数が存在しない場合(古いPHPまたはnginx)、これをフォールバックとして使用できます:

<?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; 
    } 
}
?>
7
Panos Kal.

$ _ SERVER 変数を見て、その内容を確認してください。リンクされたマニュアルページには多くの有用な情報がありますが、単にvar_dumpで実際に何が入っているかを確認します。エントリの多くは、クライアントが行うことを決定したことと、PHPの奇妙な癖に応じて、入力されるか、入力されません。ローカルサーバー上のものを見ると、文字列としてすべてをリストする$ _SERVER ["ALL_HTTP"]エントリもありますが、マニュアルページにはリストされていないため、明らかにこれは標準ではありません。

6
davidtbernal

apache_request_header()を使用できます。多分あなたを助けます。

$headers = Apache_request_headers();        
foreach ($headers as $header => $value) {
 echo "<pre>";
 echo "$header : $value";
 echo "</pre>";
}
0
hoggy kurnia