通过PHP使用数组向表单提交数据

3

我正在使用Sirportly进行支持,我可以通过HTML远程发布表单,但是我正在尝试将其集成到WordPress中,并希望通过curl/php从插件发布此表单。我面临的挑战是要将内容发布为数组对象:

例如,Sirportly生成的基本原始HTML表单包含以下内容:

<input type='text' name='ticket[name]' id='form26-name' />
<input type='text' name='ticket[email]' id='form26-email' />
<input type='text' name='ticket[subject]' id='form26-subject' />
<textarea name='ticket[message]' id='form26-message'></textarea>

我知道对于基本的表单元素,如姓名=名称,电子邮件=电子邮件等,我可以采取以下措施:

//create array of data to be posted
$post_data['firstName'] = 'Name';
$post_data['action'] = 'Register';
//traverse array and prepare data for posting (key1=value1)
foreach ( $post_data as $key => $value) {
    $post_items[] = $key . '=' . $value;
}
//create the final string to be posted using implode()
$post_string = implode ('&', $post_items);

如果元素需要以“ticket[name]”而不是“name”的形式发布,我该如何类似地完成呢?

编辑/更新 - 答案

由于下面的答案,我想到了解决方案。我的问题不是获取数组中的数据,因为我以不同的方式接收它(但仍然从数组中),而是在POST请求中正确编码它。这是我最终得出的结果(请注意,我正在使用Gravity Forms来获取数据):

//numbers in here should match the field ID's in your gravity form
$post_data['name'] = $entry["1"];
$post_data['email'] = $entry["2"];
$post_data['subject'] = $entry["3"];
$post_data['message']= $entry["4"];

foreach ( $post_data as $key => $value) {
    $post_items[] = 'ticket[' . $key . ']' . '=' . $value;
}

$post_string = implode ('&', $post_items);

我只需要将for循环更改为将额外的ticket [和]部分包装在提交文章的键周围即可。

3个回答

3
foreach ( $post_data['ticket'] as $key => $value) {
    $post_items[] = $key . '=' . $value;
}

我不得不编辑这个以正确格式化提交的数据。 - anthonysomerset

2
你所列出的表单将在服务器上呈现以下结构:
$_POST["ticket"] = Array(
   "name" => "some name",
   "email" => "some@thing",
   "subject" => "subject of something",
   "message" => "message text"
   );

所以,$_POST["ticket"]实际上是你的$post_data

这是正确的,但我必须对其进行编码以使提交成功,只需要编辑原始行中的一行以正确格式化它,详见编辑。 - anthonysomerset

0

你可以通过以下方式访问变量:$_POST['ticket']['name']

如果你想查看该值,应该使用:echo $_POST['ticket']['name'];

要进行循环,可以使用:

foreach($_POST['ticket'] as $key => $val){
    echo "Key =>  " . $key. ", Value => " . $val . "<br />";
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接