0

我知道这是不好的形式,但我们无法更改由 SalesForce 设置的隐藏输入名称。我有一个输入如下的表单:

<input type="hidden" name="00N5000000XXXXX" value="Demo_Account" />

和我的 PHP 通过 cURL 发布给他们

$00N5000000XXXXX = $_POST['00N5000000XXXXX'];

这显然不起作用,因为它有一个变量名的数字。

当我将名称更改为:

$Foo = $_POST['00N5000000XXXXX'];

后端不起作用,因为它期望表单提交一个名称为 00N5000000XXXXX 的值,而不是 Foo 或我想调用的任何名称。

显然,我不是 PHP 开发人员,但需要一些关于如何解决这个问题的建议。谢谢你。

4

1 回答 1

3

您不必先将其保存到变量中:

<?php
    $transferPostFields = array(
        '00N5000000XXXXX'
    );

    $postFields = array();
    foreach ($_POST as $key => $value) {
        if (in_array($key, $transferPostFields)) {
            $postFields[$key] = $value;
        }
    }

    $curlHandle = curl_init();
    curl_setopt_array($curlHandle, array(
        CURLOPT_URL => 'http://api.salesforce.com/whatever/urls/they/use',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => http_build_query($postFields)
    ));
    $output = curl_exec($curlHandle);

    echo 'The output we received from SalesForce was: ' . $output;
?>

如果要转移所有帖子字段,只需更改顶部(以上任何内容$curlHandle = curl_init()为:

$postFields = $_POST;

如果您不需要先通过自己的服务器,那么只需更改您的表单:

<form method="post" action="http://api.salesforce.com/whatever/urls/they/use">
于 2013-10-17T15:19:25.763 回答