Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.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中使用POST方法、POST字段和标题信息重定向到远程URL_Php_Laravel_Curl_Http Post_Guzzle - Fatal编程技术网

在PHP中使用POST方法、POST字段和标题信息重定向到远程URL

在PHP中使用POST方法、POST字段和标题信息重定向到远程URL,php,laravel,curl,http-post,guzzle,Php,Laravel,Curl,Http Post,Guzzle,我刚刚遇到一种情况,我想将一些数据发布到远程URL。除了发布数据和一些标题信息之外,我还希望用户被重定向到该发布url 让我在这里解释一下这个场景,我正在我的web应用程序中集成一个第三方支付网关。我正在使用Laravel。在一系列API调用之后,应用程序将向API提交付款详细信息。API结果确实有一个第三方url(各银行的),我需要让用户完成身份验证过程。我有一对夫妇的数据和一个标题信息,以采取与它一起。我试过Laravel Guzzle,但就像cURL一样,当我们提交POST数据时,我们会得

我刚刚遇到一种情况,我想将一些数据发布到远程URL。除了发布数据和一些标题信息之外,我还希望用户被重定向到该发布url

让我在这里解释一下这个场景,我正在我的web应用程序中集成一个第三方支付网关。我正在使用Laravel。在一系列API调用之后,应用程序将向API提交付款详细信息。API结果确实有一个第三方url(各银行的),我需要让用户完成身份验证过程。我有一对夫妇的数据和一个标题信息,以采取与它一起。我试过Laravel Guzzle,但就像cURL一样,当我们提交POST数据时,我们会得到回复。但是没有被重定向

如果我必须使用一个标准的html表单,我如何才能在那里发布标题信息。使用jqueryajax也可能带来同样的问题,即我无法重定向用户

$post = [
    'username' => 'user1',
    'password' => 'passuser1',
    'gender'   => 1,
];

$ch = curl_init('http://localhost/laravel/arax_v1/paytm/callback');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'location: http://localhost/laravel/arax_v1/paytm/callback'
));

// execute!
$response = curl_exec($ch);

// close the connection, release resources used
curl_close($ch);
我做了一些研究并尝试了一些东西

  • 通过guzzle,我实际上能够使用getBody方法将HTML内容显示给用户,但是HTML没有得到正确的解析,图像被破坏(因为它们在网页中使用的是相对路径),链接和按钮没有将我带到所需的位置
  • 我也使用CURLOPT_FOLLOWLOCATION指令尝试了cURL,但它也返回响应,而不是重定向用户

    $post = [
        'username' => 'user1',
        'password' => 'passuser1',
        'gender'   => 1,
    ];
    
    $ch = curl_init('http://localhost/laravel/arax_v1/paytm/callback');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'location: http://localhost/laravel/arax_v1/paytm/callback'
    ));
    
    // execute!
    $response = curl_exec($ch);
    
    // close the connection, release resources used
    curl_close($ch);
    

    有谁有更好的办法解决这个问题吗?

    您是否尝试过将远程url设置为html表单中的操作参数?这样,当用户单击submit时,他们将被带到远程url,其他重定向由远程服务器处理。guzzle完成此任务不是更容易吗?@djunehor是的,我已经尝试过了,但是我如何才能用它传递标题信息。远程url在标题中查找数据以供进一步处理。@senty我尝试过guzzle,并设法将响应打印到DOM。但这没有任何好处。链接、按钮和图像似乎都断了,因为这些链接都是远程url的内部链接,而且每个链接都与我的域混淆了。比如remote-url.com/payment/process现在指向my-url.com/payment/processOh,标题。您是否可以要求API提供程序返回重定向URL,而不是尝试重定向?这样,您就可以获取URL并重定向用户