📅  最后修改于: 2023-12-03 14:52:48.361000             🧑  作者: Mango
在 Web 开发中,读取请求标头非常常见,特别是当我们需要获取请求中的特定信息时。本文将介绍如何在 PHP 中读取任何请求标头。
在 PHP 中,我们可以使用 $_SERVER
超级全局变量获取请求信息。其中,$_SERVER['HTTP_XXX']
可以获取特定请求标头 XXX
的值(其中 XXX
指标头名称)。
例如,要获取请求中的 User-Agent
标头,可以使用以下代码:
$userAgent = $_SERVER['HTTP_USER_AGENT'];
echo $userAgent;
返回的结果应该类似于:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3
注意:标头名称不区分大小写。
如果您想获取所有请求标头及其值,可以通过遍历 $_SERVER
数组来实现。以下代码演示了如何通过遍历获取所有请求标头:
foreach ($_SERVER as $key => $value) {
if (substr($key, 0, 5) == 'HTTP_') {
$header = str_replace(' ', '-', ucwords(str_replace('_', ' ', strtolower(substr($key, 5)))));
echo $header.': '.$value."\r\n";
}
}
运行代码后,会输出所有请求标头及其值:
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4
让我们一起逐行分析上面的代码段:
$_SERVER
数组。substr()
函数检查 $key
是否以 HTTP_
开头。HTTP_
存在,使用 str_replace 函数将 _
(下划线)替换为一个空格,将每个单词的首字母转换为大写字母。$header
存储为标头名称,并在此处打印。$value
,这是标头的值,并在每个标头名称和值之间添加冒号和空格。如您所见,在 PHP 中获取任何请求标头非常简单。您可以通过遍历 $_SERVER
数组或使用 $_SERVER['HTTP_XXX']
语句来检索请求标头。无论哪种方式都很简单,希望这篇文章能够帮助您了解如何在 PHP 中获取请求标头。