重定向HTTP表单帖子



一点背景:我在公共网站上有一个表单,需要将数据发布到我的防火墙后面的apache服务器。我不想从Internet提供直接访问此网络主机。

当前这是我正在做的:我在DMZ中有IIS服务器。该IIS服务器是唯一可以通过防火墙访问Apache服务器的IP。作为临时解决方案,我使用"应用程序请求路由"设置了IIS。通过IIS向Internet展示Apache框。

我想做的是:可以捕获并中继表单的方法,而无需将Apache框展示到Internet。这里的诀窍是,该帖子将来自Internet上的任何位置,被IIS服务器抓住,然后从IIS服务器中继到Apache框。我考虑使用PHP/卷曲来进行此操作,但不确定是否使用类似的东西会解决问题:

<?php
$todo = "";
while (list($name, $value) = each($HTTP_POST_VARS)) {
$todo.=$name."=".$value."&";
}
$ch = curl_init('http://mylanserver/capture.php');
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $todo);
curl_exec ($ch);
curl_close ($ch);
?>

有人可以将我指向正确的方向吗?谢谢。

我包含的第一个语句正常工作,但并没有传递我的表单上有多个选择选项的值。它只是在田野中填充"数组"。我通过这样做对此进行了纠正:

$postParams = file_get_contents("php://input"); 

$ch = curl_init('http://mysite/capture.php');
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postParams);
curl_exec ($ch);
curl_close ($ch);

然后,我需要将客户端重定向到"谢谢"页面,我的后端程序正在发送此数据,但是我无法让curl curl function with,我可以通过进行标题刷新和设置来解决此问题值为1的值:

header("refresh:1;url=http://mythankyoupage");  

感谢您的帮助!

如果我正确理解您,您想发送发布数据?

尝试以下操作:

$url = 'http://server.com/path';
$data = array('key1' => 'value1', 'key2' => 'value2')
// use key 'http' even if you send the request to https://...
$options = array('http' => array(
    'method'  => 'POST',
    'content' => http_build_query($data)
));
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);

您不必自己构建$数据数组,只需通过$ _post数组。

使用snoopy。这将对您有很大帮助。或将数据保存在某个温度数据库中,创建一个小机器人(您可以再次使用Snoopy),并允许它与Web服务器进行通信并按照您喜欢的数据进行播放。将此机器人安排为cron in cron tab。

相关内容

最新更新