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


Submit form with PHP cURL, multiple checkboxes with same name

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

但是现在,我想提交选中多个框的表单。我尝试了这个StackOverflow帖子的评论中的建议:

curl_setopt($ch, CURLOPT_POSTFIELDS, '...&same_name[]=value_1&same_name[]=value_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');,没关系。

如果是外部的 - 你不能有多项选择。

嗯,这真的很奇怪。我只是尝试使用以下代码设置我自己的页面(这个是外部的),并且似乎确实不可能选择多个值:

<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);
}
?>

但是经过一些调整,我想我无论如何都能让它工作..&same_name=value_1&same_name=value_2。

我不知道他们是如何在服务器端做到这一点的,但它似乎有效!

多值字段传递数组是完全可以的。它通常是一个复选框,但它可以是任何字段,例如多选。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);