2009-09-10 14 views

答えて

18

すべてのHTTPリクエストヘッダーフィールドは$_SERVERCookieを除く)にあり、キーはHTTP_で始まります。 Apacheを使用している場合は、apache_request_headersも試してみてください。

+0

Cookieについてはどうなりますか?それらをフェッチするのに$ _COOKIE []を使用できますか? –

+1

@dskanthはい、 '$ _COOKIE'には、クライアントから送信された既に解析されたクッキーが含まれます。しかし、$ _SERVER ['HTTP_COOKIE'] 'はありません。 – Gumbo

+0

@Gumbo、これは 'getallheaders'とどのように違うのですか?後者のためにいくつかのヘッダーが取り除かれていますか? – Pacerier

33

この

print_r($ _SERVER)

を試してみてそれが含まれているものを見るために$_SERVER変数で配列

+0

より具体的なものを使用したい場合は、次のようにします。 '<?php print_r($ _ SERVER [URL])?>' – LeRoy

5

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

19

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

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

あなたは、単にapache_request_headers()またはそのエイリアスgetallheaders()を使用することができます。

使用法:関数は(古いPHPやnginxのを)存在しないecho json_encode(getallheaders());

上記の場合は、フォールバックとしてこれを使用することができます:

<?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

あなたは)(apache_request_header使用することができます。 がお手伝いします。

$headers = apache_request_headers();   
foreach ($headers as $header => $value) { 
echo "<pre>"; 
echo "$header : $value"; 
echo "</pre>"; 
} 
関連する問題