PHP file_get_contents заблокирован на моем сервере - PullRequest
0 голосов
/ 04 октября 2019

У меня проблемы с получением данных, которые мне отправляет внешний сервер. Я объясню лучше: чтобы изменить статус записи в моей базе данных, я связываюсь с внешним приложением, которое отправляет приложению, которое я создал, результат вызова в заголовке.

Теперь мой вопрос: если у меня на сервере заблокировано или ограничено 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!);
    }
}

1 Ответ

0 голосов
/ 08 октября 2019

file_get_contents("php://input") даст вам необработанные данные, поэтому вы не сможете получить к ним доступ в виде массива (как в $requestData['signature']). Сначала вам нужно проанализировать в соответствии с его «реальным» форматом (например, json_decode, если это JSON).

Альтернативы - если вы определенно не можете использовать file_get_contents("php://input") на своем сервере - будутиспользовать GET запрос als @ CD001 или использовать заголовки для передачи вашей информации.

Если вы не имеете никакого влияния на то, как внешний сервер отправляет вам данные,можно было бы использовать $HTTP_RAW_POST_DATA - но, пожалуйста, обратите внимание, что вам не следует так делать, если вы можете избежать его, поскольку он устарел и все равно был удален в PHP7.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...