Мне нужно отправить запрос с именами переменных, которые содержат скобки на удаленной веб-странице через Curl.PHP & Curl: переменная post в квадратных скобках
Далекая форма содержит переменные в скобках, например:
<input name="test[firstname]">
<input name="test[lastname]">
Итак, я построю свою Cu запрос, как это:
function httpPost($url,$params)
{
$postData = '';
foreach($params as $k => $v)
{
$postData .= $k . '='.$v.'&';
}
$postData = rtrim($postData, '&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_HEADER,true);
curl_setopt($ch,CURLOPT_POST, count($postData));
curl_setopt($ch,CURLOPT_POSTFIELDS, $postData);
$output = curl_exec($ch);
if($output === false)
{
return 'Curl error: ' . curl_error($ch);
}
else
{
return $output;
}
curl_close($ch);
}
$params = array(
"test[firstname]" => "Frank",
"test[lastname]" => "Tomaso"
);
var_dump($params);
// array(2) { ["test[firstname]"]=> string(5) "Frank" ["test[lastname]"]=> string(6) "Tomaso" }
echo httpPost("http://www.mywebsite.tld/search/",$params);
Скрипт не возвращает ошибку, но ничего появляется на экране ($ output). Если я удалю контент $ params, он выводит страницу, но без каких-либо результатов. Поэтому я думаю, что есть проблема с именами переменных в скобках. Как вы думаете ?
Можете ли вы добавить вывод из 'var_dump ($ params);' в ваш вопрос? – mkaatman
Я сделал то, что вы просили. –
Попробуйте '$ postdata = http_build_query ($ params);' (значения должны быть указаны в urlencoded) – symcbean