服务器无法通过URL重定向捕获从其他服务器发送的POST数据

时间:2012-10-16 06:19:00

标签: php post

最近,我开始为我的网站开发支付网关(进一步拼写为' PG ')流程。此过程包括通过重定向到其页面,通过表单将发布数据发送到 PG 服务器,并通过 PG 收到有关此事务的响应通过将URL重定向到我们的服务器页面发送 POST数据

此处出现问题,因为我的服务器无法检索从 PG 服务器发送的POST数据。

当我使用PHP进行编码时,我尝试使用print_r($_POST);打印来自 PG 的所有响应,甚至尝试使用print_r($_REQUEST);。除PHPSESSID和其他一些数据数组外,我没有找到任何数据打印。

至于确认,我检查了他们是否使用称为“ TamperIE ”的IE插件发送数据。它显示发送到其服务器的所有POST数据。但它根本没有进入我们的服务器。我在另一台服务器上尝试了这个过程:我能够获得POST响应,但不能使用当前正在运行的服务器。

你能说出可能出现的问题吗?

4 个答案:

答案 0 :(得分:0)

使用curl模拟来自其他服务器的请求,使用以下内容制作test.php:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/path/to/form");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$data = array(
    'foo' => 'foo foo foo',
    'bar' => 'bar bar bar',
    'baz' => 'baz baz baz'
);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);

curl_close($ch);

使用cli运行它以获取调试信息并查看错误。不要忘记在场外放置应该从服务器返回的变量和确切的URL

答案 1 :(得分:0)

我找到了这个问题发生的原因。

.htaccess 文件中,我写了重定向行:

RewriteRule ^ http://mysite.com{REQUEST_URI} [R=301,L]

如果我从文件中删除上述行,我可以从 PG 服务器接收POST字段,但是我删除了存储的数据,然后继续 PG 包含预订信息。这些会话无法在响应页面中显示,因为服务器从响应页面生成全新的会话。

我找到了一个解决此问题的替代解决方案:

我在需要会话的所有页面中使用以下代码:

$lifetime=60*30;
session_set_cookie_params ( $lifetime , '/', '.mysite.com');

session_start();之前添加上述代码。

现在我可以从 PG 获取两个POST数据,并且能够保留SESSION值

但是,我认为这不是解决此问题的理想方案。如果有人可以为URL重定向建议任何SERVER配置并在REDIRECTION之后维护SESSION值,那将会很棒。谢谢大家: - )

答案 2 :(得分:0)

如果可能的话,在PG请求中发送您的销售/采购订单的唯一代码(订单ID),我确信您的PG将在POST数据中发回该唯一代码,并借助该唯一代码跟踪订单ID以更新订单的状态。

通过使用此方法,您无需担心会话。

答案 3 :(得分:0)

使用CURl,它安全可靠。