使用PHP cURL提交表单,多个具有相同名称的复选框

时间:2016-01-27 11:31:50

标签: php curl

我正在尝试使用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');

但是后来我得到了一个基于没有选中复选框的响应,因此它不起作用。

基本上,如何在此请求中正确提交此类数组?谁能指出我正确的方向?

3 个答案:

答案 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);