Как я могу сделать эквивалент двойной отправки формы с помощью PHP?

У меня проблема с формой. Мне нужно, чтобы он выполнял два действия только одним щелчком мыши. Я читал, что лучшим решением является сценарий на стороне сервера, но мои знания PHP довольно ограничены, поэтому я очень признателен за любую помощь.

Два действия, которые мне нужно выполнить:

  1. Запустите скрипт, который загружает файл и отправляет электронное письмо (action="uploader.php")
  2. Направить пользователя к платежному шлюзу PayPal (action="https://www.paypal.com/cgi-bin/webscr")

Насколько я понимаю, проблема в том, что я не контролирую скрипт PayPal, но он, очевидно, берет некоторые данные из формы (т. е. сумма, концепция и т. д.), поэтому добавление простого перенаправления в uploader.php нецелесообразно. т достаточно.

Как вы думаете? Как я мог это решить?

Спасибо!

ОБНОВЛЕНИЕ: я попытаюсь опубликовать поток действий пользователя:

  1. пользователь заполняет форму и добавляет файл для загрузки
  2. 1-е действие формы: файл загружается и отправляется электронное письмо (action="uploader.php")
  3. Действие второй формы: пользователь переходит к платежной форме PayPal (action="https://www.paypal.com/cgi-bin/webscr")
  4. Когда покупка завершена, пользователь попадает на страницу подтверждения покупки.

person mvime    schedule 14.08.2010    source источник


Ответы (2)


Ваш uploader.php должен показать новую форму PayPal (или ту же) пользователю и отправить ее с помощью javascript на dom ready. Не забывайте и о пользователях, не использующих JavaScript.

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" id="myForm">
  <!-- obviously hidden input's -->
  <script type="text/javascript">
    window.onload = function(){
      document.getElementById("myForm").submit();
    }
  </script>
  <noscript><input type="submit" value="Continue to Paypal!" /></noscript>
</form>
person Anpher    schedule 14.08.2010
comment
Прошу прощения, но я не слежу. Может быть, это потому, что в своем ответе вы предполагаете, что я знаю больше, чем на самом деле... Я не вижу ссылки на первое действие, которое мне нужно выполнить (запустить uploader.php). Я обновил исходный вопрос с дополнительной информацией. Спасибо за вашу помощь! - person mvime; 15.08.2010
comment
@JMin запускает uploader.php, когда вы отправляете ему форму. PHP-скрипт запускается по запросу. Отправка формы просто запрашивает страницу PHP с некоторыми параметрами POST. Анфер предполагает, что ваш скрипт uploader.php выводит (echo) код, который он разместил в своем ответе, и что javascript (который он также предоставил) автоматически отправляет сгенерированную форму в PayPal. - person Carson Myers; 15.08.2010
comment
Я пытался сказать, что вы не можете отправить одну форму на два или более URL-адреса один раз. Вы должны сделать это один за другим. форма -> uploader.php -> форма -> paypal - person Anpher; 15.08.2010
comment
Большое спасибо Anpher за ваше решение, а также спасибо Carson Myers за объяснение. Это сработало чудесно! - person mvime; 15.08.2010

Вы можете отправить форму на submit.php, загрузить свой файл, выполнить действие по электронной почте, а затем использовать CURL для отправки ваших данных в PayPal.

На этом сайте есть пример отправки данных в PayPal через CURL/PHP:

http://curl.phptrack.com/forum/viewtopic.php?p=9643&sid=5cc0c394df6efcf73772273846430fbe

person jbnunn    schedule 15.08.2010
comment
Спасибо за Ваш ответ. После прочтения ссылки, которую вы разместили, другое решение показалось мне проще. - person mvime; 15.08.2010