【问题标题】:post to form via php with array通过带有数组的 php 发布到表单
【发布时间】:2012-04-12 23:36:44
【问题描述】:

我正在使用 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 循环以将额外的票 [ 和 ] 部分包裹在提交提交的密钥周围

【问题讨论】:

    标签: php arrays forms post curl


    【解决方案1】:
    foreach ( $post_data['ticket'] as $key => $value) {
        $post_items[] = $key . '=' . $value;
    }
    

    【讨论】:

    • 我必须编辑它以正确格式化提交数据
    【解决方案2】:

    您上面列出的表单将在服务器上产生这种结构:

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

    所以,$_POST["ticket"] 真的是你的$post_data

    【讨论】:

    • 这是正确的,但是我必须将其编码为正确的帖子数据才能提交,只需编辑其中一个原始行以正确格式化,请参阅编辑
    【解决方案3】:

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

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

    循环你去:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-27
      • 2017-06-28
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      相关资源
      最近更新 更多