一点背景:
我在公共网站上有一个表单需要将数据发布到防火墙后面的Apache服务器上.我不想通过互联网直接访问此虚拟主机.
我在公共网站上有一个表单需要将数据发布到防火墙后面的Apache服务器上.我不想通过互联网直接访问此虚拟主机.
目前这就是我正在做的事情:我的DMZ中有一个IIS服务器,这个IIS服务器是唯一允许通过防火墙访问apache服务器的IP服务器.作为临时解决方案,我使用“应用程序请求路由”设置IIS,通过IIS将Apache框呈现给Internet.
*我想做什么:*有一些方法来捕获然后传递表单,而不必将Apache框呈现给互联网.这里的诀窍是POST将来自互联网上的任何地方,被IIS服务器抓取,然后从IIS服务器中继到apache框.我已经研究过使用PHP / cURL这样做,但我不确定是否
使用这样的东西可以做到这一点:
<?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,$postParams); curl_exec ($ch); curl_close ($ch);
然后我需要将客户端重定向到“谢谢”页面,我的后端程序正在发送这些数据,但我无法使cURL与它一起工作,我通过执行标头刷新并将值设置为1.像这样:
header("refresh:1;url=http://mythankyoupage");
谢谢您的帮助!