我需要安装啥模块才能在 $_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 Server2012在 windows server2008上安装需要啥样的.net环境?
我需要安装啥来获得在 Windows Server 2012 R2 Standard 上运行的 C++ hello world .exe 的 x64 调试版本?