如何发布带有数字的变量作为名称


How to post a variable with a number for name

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

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

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

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

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

当我将名称更改为:

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

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

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

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

<?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">