我知道这是不好的形式,但我们不能更改隐藏的输入名称,因为它是由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">