2009-09-10 82 views

回答

18

每个HTTP请求标头字段位于$_SERVERCookie除外),密钥以HTTP_开头。如果你使用Apache,你也可以试试apache_request_headers

+0

那么Cookie信息呢?我们可以使用$ _COOKIE []来获取它们吗? – 2014-02-06 10:43:55

+1

@dskanth是的,'$ _COOKIE'将包含客户端发送的已解析的cookies。但是不会有$ _SERVER ['HTTP_COOKIE']'。 – Gumbo 2014-02-06 17:14:33

+0

@Gumbo,这是来自'getallheaders'的差异吗?是否有一些标题被删除后者? – Pacerier 2018-01-31 22:36:28

33

试试这个

print_r($ _ SERVER)

它会列出该阵列

+0

如果你想要更具体的用途:'<?php print_r($ _ SERVER [URL])?>' – LeRoy 2015-06-02 11:55:13

5

看那$_SERVER变量中的一切,看它所包含的内容。链接的手册页有很多有用的信息,但也可以简单地通过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()

用法: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; 
    } 
} 
?> 
0

你可以使用apache_request_header(); 也许能帮到你。

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