1

フォームから2つの異なる場所に情報を送信するための最良/最も簡単な方法は何ですか.基本的に1つのフォームに2つのアクションがあります. アクションごとに異なる名前を付ける必要があるいくつかのフィールドがあります。

<form id="form" name="form" action='post.php' method='POST' accept-charset='UTF-8'><input type='hidden' name='xnQsjsdp' value=SlGqwqH3ITc$/>  <input type='hidden' name='xmIwtLD' value=x4LHs39QfKiFkCs1PrsnsG-*B6-MHnNR/>  <input type='hidden' name='actionType' value=TGVhZHM=/> <input type='hidden' name='returnURL' />
<input name='firstName' type='text' id="firstName" style="float:left; width:45%;" maxlength='40' />
<input name='lastName' type='text' id="lastName" style="float:left; width:45%;" maxlength='40' />
<input type="submit" />
</form>

post.php は次のようになります。

<?php

    if ($_SERVER['REQUEST_METHOD'] == "POST") {

      $hidden1      = $_POST["xnQsjsdp"];
      $hidden2      = $_POST["xmIwtLD"];
      $hidden3      = $_POST["actionType"];
      $hidden4      = $_POST["returnURL"];
      $firstName    = $_POST["firstName"];
      $lastName     = $_POST["lastName"];
      $street       = $_POST["Street"];
      $city         = $_POST["City"];
      $State        = $_POST["State"];
      $zipCode      = $_POST["Zip"];
      $email        = $_POST["Email"];
      $phone        = $_POST["Phone"];
      $LEADCF7      = $_POST["LEADCF7"];
      $zohoPrams    = "xnQsjsdp=$hidden1&xmIwtLD=$hidden2&actionType=$hidden3&returnURL=$hidden4&First Name=$firstName&Last Name=$lastName";
      $maxPrams     = "FName=$firstName&LName=$lastName";

    };

?>
<script>
$(function() { // setup an onReady (similar to onLoad) handler
        $.post("https://crm.zoho.com/crm/WebToLeadForm", <?php echo $zohoPrams; ?>; // post to first address
        $.post("http://www.max360group.com/", <?php echo $maxPrams; ?>; // post to second address
});
</script>

ご覧のとおり、ajaxを使用してみました..しかし、何か間違ったことをしていると思います。他の方法でこれを行うための提案があれば、それは素晴らしいことです:]ありがとう!

4

3 に答える 3

4

post.php で cURL を使用してサーバー側で実行できます。

したがって、変数を設定し、それらを検証してクリーンアップすると、次のようになります。

$zoho = curl_init("https://crm.zoho.com/crm/WebToLeadForm");
curl_setopt($zoho, CURLOPT_SSL_VERIFYPEER, false); //Note, not very secure.  Would have to get certificate otherwise.  Look up how to.
curl_setopt($zoho, CURLOPT_FOLLOWLOCATION, 1); //Makes sure that it follows any redirects
curl_setopt($zoho, CURLOPT_RETURNTRANSFER, 1); //Returns the result instead of outputting it to the browser
curl_setopt($zoho, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); //Will make the end server think it was submitted with Firefox, and not by a server using cURL.
curl_setopt($zoho, CURLOPT_POST, 1);
curl_setopt($zoho, CURLOPT_POSTFIELDS, $zohoprams);  
//If you want the rest of the $_POST data and not just what you set above in $zohoprams, 
//CURLOPT_POSTFIELDS takes either an array, which will automatically do the appropriate thing with it as a $key=$value, or a string like you have formatted for $zohoprams
curl_exec($zoho);
curl_close($zoho);

$max = curl_init('http://www.max360group.com/');
curl_setopt($max, CURLOPT_POST, 1);
curl_setopt($max, CURLOPT_POSTFIELDS, $maxprams);
curl_setopt($max, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($max, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($max, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 
curl_exec($max);
curl_close($max);

あなたが望むことを正確に行うには、少し変更する必要があるかもしれません。おそらく、ブラウザのようにヘッダーを偽造する必要がありますが、それが基本的な機能です。CURLOPT_RETURNTRANSFER を true に設定する必要がある場合もあります。

于 2011-01-04T22:13:01.987 に答える
2

XHR または Ajax リクエストの送信は、クロス ドメインでは許可されていません。これは、cURL を使用して実現できます。PHP と cURL を使用してフォームを送信する方法に関するチュートリアルがかなりあると思います。

正しい方向に進むための Google 検索のサンプル: http://www.google.com/search?q=using+curl+to+submit+form+data+php

于 2011-01-04T22:10:06.910 に答える
0

あなたの主な問題は、JavaScript を使用して他のサーバー上のファイルにアクセスできないことです。機能するアプローチは、フォームをセットアップするだけの PHP ファイルをサーバーに配置し、それらを ( submit()javascript を使用してフォームを介して) リモート サーバーに投稿することです。

于 2011-01-04T22:11:03.290 に答える