PHP file_get_contents 在我的服务器上被阻止

PHP file_get_contents blocked on my server

我在检索外部服务器发送给我的数据时遇到问题。我会更好地解释:为了更改数据库中记录的状态,我联系了一个外部应用程序,该应用程序将 header.

中的调用结果发送到我创建的应用程序

现在,我的问题是:如果我的服务器 file_get_contents("php://input") 被阻止或限制,我是否有替代解决方案来检索该数据?如果是,它是什么?

编辑:这是一个代码示例。

//the function will be called every time the external server calls my file
function remoteValidation(){
    $requestData = file_get_contents("php://input");
    if (isset($requestData) && !empty($requestData) && $requestData['signature'] == $this->savedSignature) {
        // validation on the signature
    } else {
        throw new Exception ('The signature is not valid, or is empty!);
    }
}

file_get_contents("php://input") 将为您提供 原始 数据,因此您将无法将其作为数组访问(如 $requestData['signature'] 中)。您首先必须根据其 "real" 格式进行解析(如 json_decode 如果它是 JSON)。

替代方案 - 如果您绝对不能在您的服务器上使用 file_get_contents("php://input") - 将使用 GET 请求 als @CD001 声明或可能使用请求 headers 传输您的信息。

如果您对外部服务器向您发送数据的方式没有影响,则可以使用 $HTTP_RAW_POST_DATA - 但请注意,如果可以避免,则不应该这样做已弃用并已在 PHP7 中删除。