通过带有数组的php发布到表单

时间:2012-03-29 10:18:01

标签: php arrays forms post curl

我正在使用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>

我知道基本的表单元素,例如name = name,name = email等我可以执行以下操作:

//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',我该如何做类似的事情

编辑/更新 - 答案

感谢下面的答案,我提出了解决方案,我的问题是无法访问数组中的数据,因为我以不同的方式接收它(但是从数组中获取相同的结果),但正确编码它在帖子请求中,这是我最终得到的(注意我正在使用重力表格来获取数据:

//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循环以包含额外的票证[和]部分围绕密钥进行帖子提交

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

您在上面列出的表单将在服务器上生成此结构:

$_POST["ticket"] = Array(
   "name" => "some name",
   "email" => "some@thing",
   "subject" => "subject of something",
   "message" => "message text"
   );

因此,$_POST["ticket"]确实是您的$post_data

答案 2 :(得分:0)

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

所以,如果你想看到你应该看到的价值:echo $_POST['ticket']['name'];

循环你去:

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