dig*_*rld 20 php forms arrays curl
我基本上用PHP处理HTML表单,然后将其发送到其他地方进行存储和处理.但是我通过curl发送数组列表时遇到了麻烦.我需要这样做,当它到达接收服务器时,就好像它直接来自输入表单.
我在序列化数组时使用该函数时没有收到任何错误,但是这使得服务器无法读取它们,因此它们需要保留post格式,就像它们来自HTML表单一样.
我正在使用Kohana,但Curl的原理仍然相同,这是我的代码:
$path = "/some/process/path";
$store = "http://www.website.com";
$url = $store . $path;
$screenshots = array();
$screenshots[0] = 'image1.jpg';
$screenshots[1] = 'image2.jpg';
$screenshots[2] = 'image3.jpg';
$videoLinks = array();
$videoLinks[0] = 'video1.wmv';
$videoLinks[1] = 'video2.wmv';
$params = array(
'id' => '12',
'field1' => 'field1text',
'field2' => 'field2text',
'field3' => 'field3text',
'screenshots' => $screenshots,
'videoLinks' => $videoLinks,
);
$options = array(
CURLOPT_HTTPHEADER => array("Accept: application/json"),
CURLOPT_TIMEOUT => 30,
CURLOPT_POST => TRUE,
CURLOPT_POSTFIELDS => $params,
);
$data = Remote::get($url, $options);
$json = json_decode($data);
Run Code Online (Sandbox Code Playgroud)
干杯.
del*_*ist 53
CURLOPT_POSTFIELDS => http_build_query($params),
Run Code Online (Sandbox Code Playgroud)
http://php.net/manual/en/function.http-build-query.php
小智 6
我只想分享http_build_query()的替代方案
您可以通过分别提供每个子数组项来包含CURLOPT_POSTFIELDS的数组输入.
代替...
$videoLinks = array();
$videoLinks[0] = 'video1.wmv';
$videoLinks[1] = 'video2.wmv';
$params = array(
...
'videoLinks' => $videoLinks;
...
);
Run Code Online (Sandbox Code Playgroud)
... 做这个 ...
$params = array(
...
'videoLinks[0]' => 'video1.wmv';
'videoLinks[1]' => 'video2.wmv';
...
);
Run Code Online (Sandbox Code Playgroud)