#php #php-5.5
#php #php-5.5
Вопрос:
Я не получаю данные $ _POST в PHP-скрипте, когда он вызывается удаленно. Я попробовал это с помощью cURL и Postman.
Тип содержимого: форма-данные
curl --location --request POST 'http://example.com/backend.php?gateway=test' --form 'status=AP'
Я бы ожидал status
в POST.
Ответ:
2020-09-22 13:19:27
JSON POST:
REQUEST:
Array
(
[gateway] => test
)
GET:
Array
(
[gateway] => test
)
POST:
Array
(
)
Тип содержимого: application/x-www-form-urlencoded’
curl --location --request POST 'http://example.com/backend.php?gateway=test' --header 'Content-Type: application/x-www-form-urlencoded' --data-urlencode 'status=AP'
Я бы ожидал status
в POST.
Ответ:
2020-09-22 12:59:00
JSON POST:
REQUEST:
Array
(
[gateway] => test
)
GET:
Array
(
[gateway] => test
)
POST:
Array
(
)
Тип содержимого: application / json ‘
curl --location --request POST 'http://example.com/backend.php?gateway=test' --header 'Content-Type: application/json' --data-raw '{ "status": "AP" }'
Я бы ожидал status
в JSON POST.
Ответ:
2020-09-22 13:20:43
JSON POST:
REQUEST:
Array
(
[gateway] => test
)
GET:
Array
(
[gateway] => test
)
POST:
Array
(
)
Вот код из backend.php
<?php
header('Access-Control-Allow-Origin: *');
$json = file_get_contents("php://input");
echo '<pre>';
echo date('Y-m-d H:i:s') . "n";
echo "n";
echo "JSON POST:n";
if ($json) {
print_r(json_decode($json, true));
}
echo "n";
echo "REQUEST:n";
print_r($_REQUEST);
echo "n";
echo "GET:n";
print_r($_GET);
echo "n";
echo "POST:n";
print_r($_POST);
Ожидается, что он работает на локальном хосте, но не на производстве. Рабочая версия PHP — 5.5.38.
Комментарии:
1. Попробуйте использовать
X
вместоrequest
. например, ` -X POST`2. активен ли rewriterule (возможно, для изменения URL-адреса с http на https или для добавления WWW к имени домена)? Это изменило бы POST на GET
3. @IvoP Ах да, это из-за https. Переход на https работает. Спасибо.
Ответ №1:
странно. это должно работать так, как вы пытаетесь. можете ли вы попробовать это:
curl -d "status=AP" -H "Content-Type: application/x-www-form-urlencoded" -X POST http://example.com/backend.php?gateway=test