📜  如何在PHP读取任何请求标头(1)

📅  最后修改于: 2023-12-03 14:52:48.361000             🧑  作者: Mango

如何在PHP读取任何请求标头

在 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
解释代码

让我们一起逐行分析上面的代码段:

  1. 第一行开始一个 foreach 循环遍历 $_SERVER 数组。
  2. 第二行使用 substr() 函数检查 $key 是否以 HTTP_ 开头。
  3. 如果 HTTP_ 存在,使用 str_replace 函数将 _(下划线)替换为一个空格,将每个单词的首字母转换为大写字母。
  4. 将变量 $header 存储为标头名称,并在此处打印。
  5. 打印 $value,这是标头的值,并在每个标头名称和值之间添加冒号和空格。
  6. 这行将在每个标头和值之间添加换行符。
结论

如您所见,在 PHP 中获取任何请求标头非常简单。您可以通过遍历 $_SERVER 数组或使用 $_SERVER['HTTP_XXX'] 语句来检索请求标头。无论哪种方式都很简单,希望这篇文章能够帮助您了解如何在 PHP 中获取请求标头。