php将GET请求转换为POST请求

时间:2010-03-12 11:59:16

标签: php

我有一个只接受POST请求的托管脚本。 some,some.hosted / script.php

我如何设置另一个可以接受GET请求然后将其发布到托管脚本的简单php。 所以我可以建立这样的链接:other.site/post2hostedscript.php?postthis=data 然后将postthis = data POST到托管脚本。

TNX

编辑: post2hostedscript.php不会给出任何结果。 结果将直接转到some.hosted / script.php 就像用户直接在托管脚本上POST一样。

3 个答案:

答案 0 :(得分:3)

您的post2hostedscript.php必须:

  • 获取作为GET收到的所有参数
  • 构建POST查询
  • 发送
  • 并且,可能会返回该POST请求的结果。


例如,这可以使用curl来完成;这样的事情应该让你开始:

$queryString = $_SERVER['QUERY_STRING'];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.othersite.com/post2hostedscript.php");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $queryString);
curl_exec($ch);
curl_close($ch);

有关可与curl一起使用的选项列表,您可以查看curl_setopt的页面。


在这里,你必须至少使用:

  • CURLOPT_POST:因为你想发送一个POST请求,而不是一个GET
  • CURLOPT_RETURNTRANSFER:取决于您是希望curl_exec返回请求的结果,还是仅输出请求。
  • CURLOPT_POSTFIELDS:将发布的数据 - 即您在传入请求的查询字符串中的内容。

请注意,POST请求的响应可能包含一些有趣的HTTP标头 - 如果需要,您必须获取它们(请参阅CURLOPT_HEADER选项),然后重新启动 - 在你自己的回复中发出有趣的回复(参见header函数)

答案 1 :(得分:1)

看看“卷曲”功能,它们可以提供您所需的一切。

答案 2 :(得分:-1)

您可以考虑将旧脚本中$ _POST的所有实例替换为$ _REQUEST,这将导致它同时接受GET和POST。