PHP:将表单数据发送到php脚本,然后将数据发布到另一个表单处理器,如zapier.com?

时间:2013-09-09 21:19:04

标签: php forms post get zapier

我使用的是zapier.com的第三方表单处理器。问题是,我需要一种方法来在向第三方表单处理器提交数据后重定向用户。 Zapier.com接受发布,获取和提交提交。

我在考虑:

  1. 客户提交表单
  2. 我的php表单处理器捕获数据
  3. 我的php表单处理器然后通过POST或GET将数据提交给第三方表单处理器
  4. 我的php表单处理器然后将用户重定向到感谢页面。
  5. 我可能会过度思考这个问题,但我看到这样做的唯一方法就是制作一个表单,用于发布已发布到其中的数据。否则,表单只会将我的用户发送到第三方处理器,而不会将其重定向到我选择的任何页面。第三方表单处理器没有办法使用自定义重定向。

2 个答案:

答案 0 :(得分:0)

使用javascript和Ajax可以这样做(使用jQuery):

$("#idOfTheForm").submit(function(e) {
    e.preventDefault();
    $.ajax({
        method : "post",
        url : this.action,
        data : $(this).serialize(),
        success : function() {
            window.location = "yourUrlOfThanks.html";
        },
        error : function() {
            alert("Something went bad");
        }
    });
});

所以基本上是:发送一个帖子请求到这个表单的动作URL,一旦它抛出一个200代码(找到并且一切正常)然后重定向到我的页面。如果soemthing出错,那么服务器将抛出40 *状态代码,脚本将进入错误功能。

答案 1 :(得分:0)

您可以使用Guzzle 代理用户请求。

    $client = new Guzzle\Http\Client();

    $request = $client->post('/3rd.party.php')
        ->addPostField('user_field_1', $_POST['user_field_1'])
        ->addPostField('user_field_2', $_POST['user_field_2']);

    $response = $request->send();

    if ($response->isSuccessful()) {
        //show message
    }

缺点是您无法100%确定表单提交确实成功。为了实现这一目标,您可以废弃$request->getBody()并检查是否存在已知成功消息。