Php 如何在发送到URL之前保存表单数据

Php 如何在发送到URL之前保存表单数据,php,forms,post,Php,Forms,Post,我尝试将表单中的数据保存到文件中。但是当“提交”到外部URL时,我的脚本看不到$\u POST array。如何保存我发送而不是接收的$\u POST 我可以保存我收到的$\u POST数据(我发送到脚本并另存为POST\u array.txt)。但我必须将其发送到外部url。 我尝试使用cURL接收并重新发送保存的$\u POST,但无法使用$\u POST进行重定向。 因此,我的客户会停留在我的页面上,但应该被重定向到带有$\u POST数据的付款页面 html : <form met

我尝试将表单中的数据保存到文件中。但是当“提交”到外部URL时,我的脚本看不到
$\u POST array
。如何保存我发送而不是接收的
$\u POST

我可以保存我收到的
$\u POST
数据(我发送到脚本并另存为POST\u array.txt)。但我必须将其发送到外部url。 我尝试使用
cURL
接收并重新发送保存的
$\u POST
,但无法使用
$\u POST
进行重定向。 因此,我的客户会停留在我的页面上,但应该被重定向到带有
$\u POST
数据的付款页面

html : <form method="POST" action="cert.php">
php :  cert.php

file_put_contents('post_array.txt', $_POST, FILE_APPEND);
$url = 'https://sandbox.przelewy24.pl/trnDirect';
$fields =['p24_merchant_id' => $_POST['p24_merchant_id'],
        'p24_session_id' => $_POST['p24_session_id'],
        'p24_amount' => $_POST['p24_amount'],
        'p24_currency' => $_POST['p24_currency'],
        'p24_sign' => md5($_POST['p24_session_id'].'|'.$_POST['p24_merchant_id'].'|'.$_POST['p24_amount'].'|'.$_POST['p24_currency'].'|'.$_POST['p24__sign'])];

//open connection
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
// this cURL dosnt have a redirect option coz it doesnt work for me :(

// execute!
$response = curl_exec($ch);
file_put_contents('response.txt', $response, FILE_APPEND);
// close the connection, release resources used
curl_close($ch);
html:
php:cert.php
文件内容('post\u array.txt',$\u post,文件\u APPEND);
$url='1https://sandbox.przelewy24.pl/trnDirect';
$fields=['p24\u商户id'=>$\u POST['p24\u商户id'],
'p24_session_id'=>$\u POST['p24_session_id'],
“p24金额”=>$邮政[“p24金额”],
“p24\u货币”=>$\u邮政[“p24\u货币”],
“p24号”=>md5($\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
//开放连接
$ch=curl\u init($url);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields);
卷曲设置($ch,卷曲设置,卷曲设置);
//此卷曲没有重定向选项,因为它不适用于我:(
//执行!
$response=curl\u exec($ch);
文件内容('response.txt',$response,file\u APPEND);
//关闭连接,释放已使用的资源
卷曲关闭($ch);
因为cURL没有按预期工作,所以我想直接发送$\u POST do外部页面。(它工作正常,但我没有在我的文件中保存$\u POST) 如何在不向我的服务器/脚本发送数据的情况下保存$\u POST?

  • 您可以使用http status 307 developer.mozilla.org/en-US/docs/Web/http/status/307进行重定向。在这种情况下,主体也将被重定向
  • 另一个选择是使用js,首先向您的服务器发出请求,接收成功的回答,然后使用js通过POST方法向外部URL发出第二个请求。也许您需要一些隐藏的表单在浏览器中执行此操作

您的问题不清楚。请重新表述。您在哪里向其他服务器发送任何内容?该
$fields
数组有什么用?打开错误报告-。看到任何内容吗?请注意双下划线
p24\u符号
。这是否引发了一个警告/异常,而您没有看到它,因为错误报告已关闭?我把它放到了我的脚本中检查这些行:ini_集('display_errors',1);ini_集('display_startup_errors',1);错误报告(E_ALL);并且它不会在屏幕上显示任何错误。您能进一步解释吗?该代码似乎添加了一些付款选项-为什么要向最终用户公开该API而不是运行cURL请求?我想使用przelewy24.pl作为我的客户的付款方法。1.我必须通过POST将特定数据发送到外部url,他们会将客户重定向到付款页面,如果可以的话,稍后重定向到success.php。2.出于测试目的,我想保存我发送/接收的$u POST数据