我正在尝试使用PHP cURL提交外部表单。所有表单字段都正常工作,除了我有多个具有相同名称的复选框的问题。
<input type="checkbox" name="same_name" value="value_1">
<input type="checkbox" name="same_name" value="value_2">
<input type="checkbox" name="same_name" value="value_3">
我在传递cURL请求中的一个复选框时没有问题。在我的POST字符串中,我只是这样做:
curl_setopt($ch, CURLOPT_POSTFIELDS, '...&same_name=value_1');
但是现在,我想提交带有多个复选框的表单。我在this StackOverflow帖子的评论中尝试了这个建议:
curl_setopt($ch, CURLOPT_POSTFIELDS, '...&same_name[]=value_1&same_name[]=value_2');
但是后来我得到了一个基于没有选中复选框的响应,因此它不起作用。
基本上,如何在此请求中正确提交此类数组?谁能指出我正确的方向?
答案 0 :(得分:2)
如果是您的表单(可以更改代码),请将复选框的名称更改为same_name[]
<input type="checkbox" name="same_name[]" value="value_1">
<input type="checkbox" name="same_name[]" value="value_2">
<input type="checkbox" name="same_name[]" value="value_3">
并致电curl_setopt($ch, CURLOPT_POSTFIELDS, '...&same_name[]=value_1&same_name[]=value_2');
,确定无误。
如果它是外部的 - 你不能有多种选择。
答案 1 :(得分:0)
<form method="post">
<input type="checkbox" name="same_name" value="1">Value 1<br />
<input type="checkbox" name="same_name" value="2">Value 2<br />
<input type="checkbox" name="same_name" value="3">Value 3<br />
<input type="submit">
</form>
<?php
if(isset($_POST))
{
print_r($_POST);
}
?>
但经过一些调整之后,我认为无论如何我都使用..&amp; same_name = value_1&amp; same_name = value_2。
我不知道他们是如何在服务器端进行的,但它似乎有效!
答案 2 :(得分:0)
为多值字段传递数组是完全正确的。它通常是一个复选框,但它可以是任何字段,例如多选。 CURLOPT_POSTFIELDS能够正确处理这个问题,并且在后端你可以将它作为一个数组 - 与来自
的提交相同<input type="checkbox" name="same_name" value="1">Value 1
<input type="checkbox" name="same_name" value="2">Value 2
<input type="checkbox" name="same_name" value="3">Value 3
$fields['name']='Smith';
$fields['email']='you@your-domain.com';
....
$fields['same_name'][]=1;
$fields['same_name'][]=2;
$fields['same_name'][]=3;
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);