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

问题描述 投票:0回答:3

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

 $_SERVER["HTTP_API_KEY"]

如果我在标头数据中传递

API_KEY
,我会在服务器中得到值
$_SERVER["HTTP_API_KEY"]
。现在我的代码已移至新服务器,但我在
$_SERVER["HTTP_API_KEY"]
数组中看不到
$_SERVER
! 我认为它可能是 PHP 模块或 Apache 模块,我可能需要使用服务器进行配置。我试图找到解决方案,但不幸的是还没有找到解决方案。

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

php apache variables server
3个回答
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!';

?>

0
投票

我也有同样的问题。我通过反复试验发现:

Apache/php
环境下,
API-KEY
的 HTTP header 变为
$_SERVER['HTTP_API_KEY']

注意

-
变为
_

API_KEY
的标头不会传播到
$_SERVER


0
投票

在我的标头中使用 API-KEY 而不是 API_KEY 对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.