Данные отправлены с PHP завиток - PullRequest
0 голосов
/ 24 февраля 2020

Я отправляю несколько строк значения ключа в виде данных с помощью curl. Я обнаружил, что любая точка с запятой удаляется (согласно журналу запросов цели). Но перед тем, как отправить данные, они все еще содержат точку с запятой. Есть ли входная фильтрация в любых операциях скручивания ниже?

function curlPostShellExec($data, $url)
{
    $fields_string = '';
    foreach($data as $key=>$value)
    { 
        $fields_string .= $key.'='.$value.'&'; 
    }
    rtrim($fields_string, '&');

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, count($data));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

1 Ответ

1 голос
/ 24 февраля 2020

Замените ваши точки с запятой на %3A

В качестве альтернативы вы можете использовать urlencode() или, как предлагает unclexo, http_build_query()

urlencode будет кодировать ваши строки для безопасной передачи через CURL или GET. , И вы можете расшифровать их на другой стороне с помощью urldecode

Например.

urlencode(rtrim($fields_string, '&'));

Или вы можете заменить весь блок foreach на:

$fields_string = http_build_query($data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...