Вопрос

Какой лучший/самый простой способ отправить информацию из формы в два разных местах, в основном имеет 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 ... но я думаю, что я делаю что -то не так, если у вас есть какие -либо предложения, чтобы сделать это другим способом, который будет здорово:] Спасибо!

Это было полезно?

Решение

Вы можете сделать это на стороне сервера с curl в post.php.

Итак, у вас есть ваши переменные, и они были проверены и очищены, тогда:

$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.

Другие советы

Отправка запросов XHR или AJAX не допускается поперечного домена. Вы можете достичь этого, используя Curl. Я предполагаю, что есть довольно много учебных пособий по поводу отправки форм, использующих PHP и сгибания, плавающих здесь.

Образуйте поиск в Google, чтобы получить правильное направление: http://www.google.com/search?q=using+curl+to+submit+form+data+php

Ваша основная проблема заключается в том, что JavaScript не может быть использован для доступа к файлам на других серверах, как вы пытаетесь сделать. Подход, который бы сработал, заключается в том, чтобы на вашем сервере были бы просто настроить файлы PHP, которые просто настраивают формы и публикуют их (через формы submit()с JavaScript) на удаленные серверы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top