PHP IF оператор тестирует декодированные данные JSON - PullRequest
0 голосов
/ 24 сентября 2019

Я хочу отправить полученные данные JSON в сценарий PHP CURL, который я написал на своем сервере, чтобы затем перенаправить данные на несколько внешних URL-адресов веб-крюка, обусловленных данными, полученными в определенном ключе / значении поля.

Однако либо мое утверждение IF неправильно настроено, либо я не получаю доступ к полевым данным должным образом, потому что моя конечная точка тестового веб-крюка не доставляется.Если я удаляю оператор IF, код доставляет данные, как и ожидалось.

$dataReceive = file_get_contents("php://input");
$dataEncode = json_encode($dataReceive, true);
$headers = array ( 'Content-type: application/json');
print_r($dataEncode);

$curl = curl_init();
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt( $curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt( $curl, CURLOPT_POST, 1);
curl_setopt( $curl, CURLOPT_POSTFIELDS, $dataEncode);
curl_setopt( $curl, CURLOPT_HTTPHEADER, $headers);

if ( $dataEncode ['Field 3'] == 'Test' )  {
    curl_setopt( $curl, CURLOPT_URL, 'http://webhook1.com');
 }
if ($dataEncode ['Field 3'] == 'Test Value 2' ) {
    curl_setopt( $curl, CURLOPT_URL, 'http://webhook2.com');
 }

$results = curl_exec($curl);
echo $results;
curl_close($curl);

Данные JSON, полученные в объекте $ dataReceive:

{
   "Timestamp": 1568838624687,
   "Object": "Project",
   "UserId": "",
   "ObjectId__PhaseId": 111,
   "Other__PhaseName": "Turndown",
   "ProjectId": 111,
   "OrgId": 111,
   "Event": "PhaseChanged",
   "ObjectId__ProjectTypeId": 1409
 }

Я тестирую с помощьюПочтальон просто отправляет фиктивные данные в мой PHP-скрипт, но как только он заработает, как и ожидалось, я на самом деле буду фильтровать ключ «Other_PhaseName».

Оцените помощь!

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Там довольно много ошибок.

Начните с ваших операторов if

if ( $dataEncode['Field 3'] == 'Test')  {
    curl_setopt( $curl, CURLOPT_URL, 'http://webhook1.com');
 }

if ($dataEncode['Field 3'] == 'Test Value 2'){
    curl_setopt( $curl, CURLOPT_URL, 'http://webhook2.com');
 }
0 голосов
/ 24 сентября 2019

Я думаю, что проблема с утверждениями if.Так должно быть

if ( $dataEncode['Field 3'] == 'Test' )  {
    curl_setopt( $curl, CURLOPT_URL, 'http://webhook1.com');
}
...