0

これが悪い形式であることはわかっていますが、非表示の入力名は SalesForce によって設定されているため変更できません。次のような入力を含むフォームがあります。

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

私のPHPはcURL経由でそれらに投稿します

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

変数名に番号が付いているため、明らかに機能しません。

名前を次のように変更すると:

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

バックエンドが機能しないのは、フォームが Foo などの名前ではなく、00N5000000XXXXX という名前の値を送信することを期待しているためです。

明らかに、私は 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 に答える