Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:将表单数据发送到PHP脚本,然后PHP脚本将数据发布到另一个表单处理器,如zapier.com?_Php_Forms_Post_Get_Zapier - Fatal编程技术网

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

PHP:将表单数据发送到PHP脚本,然后PHP脚本将数据发布到另一个表单处理器,如zapier.com?,php,forms,post,get,zapier,Php,Forms,Post,Get,Zapier,我使用第三方表单处理程序,即zapier.com。问题是,我需要一种在向第三方表单处理程序提交数据后重定向用户的方法。Zapier.com接受post、get和put提交 我在想: 客户提交表格 我的php表单处理器捕获数据 然后,我的php表单处理器通过POST或GET将数据提交给第三方表单处理器 然后,我的php表单处理器将用户重定向到感谢页面 我可能想得太多了,但我看到的唯一方法是制作一个表单,发布已经发布到其中的数据。否则,表单只会将我的用户发送到第三方处理器,而不会将他们重定向到我选择

我使用第三方表单处理程序,即zapier.com。问题是,我需要一种在向第三方表单处理程序提交数据后重定向用户的方法。Zapier.com接受post、get和put提交

我在想:

  • 客户提交表格
  • 我的php表单处理器捕获数据
  • 然后,我的php表单处理器通过POST或GET将数据提交给第三方表单处理器
  • 然后,我的php表单处理器将用户重定向到感谢页面
    我可能想得太多了,但我看到的唯一方法是制作一个表单,发布已经发布到其中的数据。否则,表单只会将我的用户发送到第三方处理器,而不会将他们重定向到我选择的任何页面。第三方表单处理程序无法使用自定义重定向

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

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

    您可以使用代理用户请求

        $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()
    并检查是否存在已知的成功消息。

    使用此方案,您可能无法知道信息是否已成功提交给第三方表单处理程序。此外,如果您有一些示例代码/测试页面,那么这将非常有用。现在它只是一个普通的html表单,在表单的“action”字段中有第三方表单处理程序的URL。但我需要一种方法,在用户提交表单后,将其重定向到我确定的页面,而不是转到第三方处理器。那么curl如何将数据发布到第三方处理器?这听起来就像您可以通过对第三方处理器的ajax调用直接发布/获取表单数据。我不知道这个第三方处理器是什么,但它应该能够响应您的AJAX调用@SergueiFedorov,我试图利用AbrahamSustaita的答案通过ajax实现,但是我遇到了错误触发器,即使表单成功提交。我在这里发布了这个问题:哦,确保你清理了从$\u POST获得的数据!谢谢你的建议。我需要确保表格提交确实成功。但是,该页面不会真正提交已知的成功消息。检查http 200代码就足够了吗?但是,我无法访问服务器配置来安装必要的组件。正如我所说,您可以放弃返回的页面以确保其成功,而不只是检查返回的状态代码。您可以使用它。您不需要composer来使用这些库,只需下载它们并像其他php库一样使用它们。我不断收到错误弹出消息,而不是重定向到成功URL。但是,我可以确认数据已正确发布,并且我正在通过控制台接收firebug提供的200代码。有什么想法吗?@Damainman你能给出一些第三方在页面上写什么的html吗?在我看来,如果请求是在添加jQuery脚本之前通过ajax完成的,那么它将捕获事件并阻止它冒泡到js的其余部分。它添加了js吗?它是在没有我给你的代码的情况下用ajax完成的吗?示例的url?第三方脚本的名称?我在这里为您的ajax方法遇到的问题创建了一个新问题:似乎它与跨域ajax问题有关,因为我正在尝试向第三方处理器发帖。
        $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
        }