【问题标题】:How to post a variable with a number for name如何发布带有数字名称的变量
【发布时间】:2013-10-26 03:19:11
【问题描述】:

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

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

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

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

这显然行不通,因为它有一个变量名的数字。

当我把名字改成:

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

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

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

【问题讨论】:

  • 我不知道你的后端期望什么,但是 PHP 变量不能以数字开头。听起来你需要修复后端。 :)
  • 已经知道了。 “这显然行不通,因为它有一个变量名的数字。”
  • OP 知道这一点,请阅读问题:"..这显然不起作用,因为它有变量名的数字。"
  • @DirtyBirdDesign Salesforce 很可能不在他们的服务器上运行 PHP,或者他们没有将它们提取到变量中。您无需将其转换为变量即可使用 cURL 发布它。 curl_setopt(CURLOPT_POSTFIELDS, '0000001234=foo');?
  • @DirtyBirdDesign 抱歉 - 我习惯于使用 cURL 的类包装器。您的第一个参数需要是您的 cURL 句柄。 curl_setopt($ch, CURLOPT_POSTFIELDS, '0000001234=foo');

标签: php post


【解决方案1】:

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

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

【讨论】:

  • 谢谢伙计。无法直接发布到操作中的 url,我们会在其他地方发送内容的副本。这是一个漫长而肮脏的过程,但您可以继续使用 postfields。
  • @DirtyBirdDesign 不客气。真高兴你做到了。确保您弄清楚在呼叫销售人员超时时该怎么做(并确保在您自己的页面超时(CURLOPT_TIMEOUT)之前这样做,否则您将有重复的订单/只有您自己的订单系统而不是没有订单)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
  • 2011-02-16
相关资源
最近更新 更多