我需要安装啥模块才能在 $_SERVER 数组中查看我的标头变量?

Posted

技术标签:

【中文标题】我需要安装啥模块才能在 $_SERVER 数组中查看我的标头变量?【英文标题】:What module i need to install to see my header variables in $_SERVER array?我需要安装什么模块才能在 $_SERVER 数组中查看我的标头变量? 【发布时间】:2016-09-11 20:11:39 【问题描述】:

我有一个服务器,我有一个 php 文件,我将一些头变量传递给该文件并在 PHP 文件中读取它,如下所示...

 $_SERVER["HTTP_API_KEY"]

如果我在我的标头数据中传递API_KEY,我会在服务器中得到$_SERVER["HTTP_API_KEY"] 的值。现在我的代码已移至新服务器,我在$_SERVER 数组中看不到$_SERVER["HTTP_API_KEY"]! 我相信它可能是我可能需要使用服务器配置的 PHP 模块或 Apache 模块。我试图找到解决方案,但不幸找到了一个。

如果有人确切知道它是什么,请告诉我......

【问题讨论】:

pass API_KEY in my header data 是什么意思?它是获取或发布请求的一部分吗? 嗨,朱莉,感谢您的回复。它不是 GET 或 POST 数据...它的标头数据...我确实能够使用 PHP 中的 getallheaders() 函数读取数据...但我需要更改整个项目,因为它被编码为使用 $_SERVER 来读取这些数据......所以想知道是否有办法让它在我的新服务器上也能工作...... 您还在使用同一个网络服务器吗? (Apache 与 nginx 你有没有做过 print_r($_SERVER) 和 print_r($GLOBALS) 看看有没有? @JuliePelletier - 是的,它是与 php 7 相同的 apache 服务器 【参考方案1】:

我会试试getallheaders 函数!

如果要将密钥添加回 $_SERVER 数组,只需将其添加到文件顶部即可。

<?php

if(!isset($_SERVER['HTTP_API_KEY']) && isset(getallheaders()['API_KEY']))
    $_SERVER['HTTP_API_KEY'] = getallheaders()['API_KEY'];

?>

获取第一个可用的密钥。

<?php

if(isset($_SERVER['HTTP_API_KEY']))
    $key = $_SERVER['HTTP_API_KEY'];
elseif(isset(getallheaders()['API_KEY']))
    $key = getallheaders()['API_KEY'];
else
    die('Key not found.');

?>

适用于包含来自 Get 和 Post 请求的键。

<?php

if(isset($_SERVER['HTTP_API_KEY']))
    $key = $_SERVER['HTTP_API_KEY'];
elseif(isset(getallheaders()['API_KEY']))
    $key = getallheaders()['API_KEY'];
elseif($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['API_KEY']))
    $key = $_POST['API_KEY'];
elseif(($_SERVER['REQUEST_METHOD'] === 'GET' || $_SERVER['REQUEST_METHOD'] === 'POST') && isset($_GET['API_KEY']))
    $key = $_GET['API_KEY'];
else
    die('Key not found.');

if($key !== '12345')
    die('Invalid key.');

echo 'Hello world!';

?>

【讨论】:

嗨 Brogan,我可以通过 getallheaders() 函数读取数据...我在之前的评论中提到过...但我需要知道 PHP/Apache 中的哪个模块正在处理这个问题?所以我不必做很多代码修改...... 我对 PHP7 如何处理自定义标头不是很熟悉,但是您可能会发现它们不再与 $_SERVER 变量合并,并且没有插件可以解决此问题。我推荐只替换缺失变量的单行解决方案。在任何其他代码之前插入一次,应该没问题。 感谢您帮助我解决 Brogan。我会等着看是否有人可以得到模块名称作为答案。干杯。

以上是关于我需要安装啥模块才能在 $_SERVER 数组中查看我的标头变量?的主要内容,如果未能解决你的问题,请参考以下文章

windows server 2016 需要vmware vsphere 啥版本才能装

SQL Server 2014 安装卡住(挂起)或需要很长时间才能完成

SQL Server的排序规则在啥时候能够进行设置或修改?

我需要安装啥软件包才能使用路由套接字?

SQL Server2012在 windows server2008上安装需要啥样的.net环境?

我需要安装啥来获得在 Windows Server 2012 R2 Standard 上运行的 C++ hello world .exe 的 x64 调试版本?