【问题标题】:How to save form data before sending to URL如何在发送到 URL 之前保存表单数据
【发布时间】:2019-11-18 00:15:11
【问题描述】:

我尝试将数据从 FORM 保存到文件。但是当“提交”到外部 URL 时,我的脚本看不到 $_POST array。如何保存$_POST 我发送不接收。

我可以保存收到的$_POST 数据(我发送到我的脚本并保存为 post_array.txt)。但我必须将其发送到外部 url。 我尝试使用cURL 接收和重新发送已保存的$_POST,但我无法使用$_POST 进行重定向。 所以我的客户留在我的页面上,但应该被重定向到带有$_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);

因为 cURL 不能按预期工作,我想直接发送 $_POST 做外部页面。 (它运作良好,但我没有在我的文件中保存 $_POST) 如何在不向我的服务器/脚本发送数据的情况下保存 $_POST ?

【问题讨论】:

  • 你的问题不清楚。请改写。
  • 你在哪里向其他服务器发送任何东西?那个$fields数组有什么用?
  • 开启错误报告 - stackoverflow.com/a/21429652/296555。看到什么了吗?
  • 注意双下划线p24__sign。这是否会引发您因为错误报告关闭而没有看到的警告/异常?
  • 我在脚本中添加了以下几行:ini_set('display_errors', 1); ini_set('display_startup_errors', 1);错误报告(E_ALL);它不会在屏幕上显示任何错误

标签: php forms post


【解决方案1】:
  • 您可以使用 http 状态 307 developer.mozilla.org/en-US/docs/Web/HTTP/Status/307 进行重定向。在这种情况下,正文也将被重定向。
  • 另一种选择是使用 js,首先向您的服务器发出请求,收到成功的答案,然后使用 js 使用 POST 方法向外部 URL 发出第二个请求。也许您需要一些隐藏的表单才能在浏览器中执行此操作。

【讨论】:

  • 你能进一步解释一下吗?该代码似乎添加了一些支付选项 - 为什么应该将该 API 公开给最终用户而不是运行 cURL 请求?
  • 我想使用 przelewy24.pl 作为我的客户的付款方式。 1. 我必须通过 POST 将特定数据发送到外部 url,他们将客户重定向到付款页面,然后如果可以,则重定向到 success.php。 2. 出于测试目的,我想保存我发送/接收的 $_POST 数据
猜你喜欢
  • 2015-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
  • 2011-06-11
  • 1970-01-01
相关资源
最近更新 更多