我需要使用curl发布表单。
这是表格。
<form action="post.php" method="POST">
<input name="tm[0][name]" value="name" type="hidden" maxlength="255">
<input name="tm[0][mobile]" value="mobile" type="hidden" maxlength="10">
<input name="tm[0][email]" value="email" type="hidden" maxlength="255">
<input name="tm[0][address]" value="address" type="hidden">
<input name="tm[0][pincode]" value="pincode" type="hidden" maxlength="6">
<input name="tm[0][refCode]" value="refCode" type="hidden" maxlength="255">
<input name="tm[0][partnerRef]" value="partnerRef" type="hidden" maxlength="255">
<input name="tm[1][name]" value="name" type="hidden" maxlength="255">
<input name="tm[1][mobile]" value="mobile" type="hidden" maxlength="10">
<input name="tm[1][email]" value="email" type="hidden" maxlength="255">
<input name="tm[1][address]" value="address" type="hidden">
<input name="tm[1][pincode]" value="pincode" type="hidden" maxlength="6">
<input name="tm[1][refCode]" value="refCode" type="hidden" maxlength="255">
<input name="tm[1][partnerRef]" value="partnerRef" type="hidden" maxlength="255">
<input type="submit" name="yt0" value="Submit">
</form>
这是我的代码:
$ch = curl_init();
$postArray = array(
'api_key' => api_key,
'api_secret' => api_secret
);
$data = array();
foreach( $postData as $key => $node ) {
$postArray[ $key ] = array(
'name' => $node[ 'name' ],
'mobile' => $node[ 'mobile' ],
'email' => $node[ 'email' ],
'address' => $node[ 'address' ],
'pincode' => $node[ 'pincode' ],
'refCode' => $node[ 'refCode' ],
'partnerRef' => $node[ 'partnerRef' ]
);
}
curl_setopt( $ch, CURLOPT_URL, 'check.php' );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Content-type: multipart/form-data' ) );
curl_setopt( $ch, CURLOPT_POST => true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $postArray );
$response = curl_exec( $ch );
我不知道如何制作数组,因为每个数组的键都相同。
我想为CURLOPT_POSTFILEDS
创建数组。
感谢任何帮助。
由于
答案 0 :(得分:0)
将PHP的括号(例如name[]
)的输入名称映射到$_POST
如果您尝试从html表单复制帖子,那么您只需要将帖子字段名称与原始格式的内容重新匹配即可:
foreach ( $postData['tm'] as $id => $node ) {
foreach ( $node as $key => $value ) {
// eg name="tm[1][name]"
$postArray['tm['.$id.']['.$key.']'] = $value;
}
}
(假设$postData
相当于$_POST
)
答案 1 :(得分:0)
$postStr = "config[api_key]=api_key&config[api_secret]=api_secret&";;
foreach ($postData as $index => $node) {
foreach ($node as $key => $value) {
$postStr .= "data[{$index}][{$key}]=$value&";
}
}
$postStr = rtrim($postStr, '&');
使用以下行
curl_setopt( $ch, CURLOPT_POSTFIELDS, $postStr );
您已制作两个包含数据的阵列,另一个具有配置。它将来会帮助你。
答案 2 :(得分:0)
您可以像这样添加顶部结构:
$postArray = array(
'api_key' => api_key,
'api_secret' => api_secret,
'tm' => $_POST['tm'],
);
curl_setopt($ch, CURLOPT_POSTFIELD, $postArray);
除此之外,您应该将“Content-Type”标题保留为默认设置,即删除此行:
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: multipart/form-data'));