繁体   English   中英

PHP将GET请求转换为POST请求

[英]php to translate GET request to POST request

我在某个地方只接受POST请求的托管脚本。 例如some.hosted / script.php

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

TNX

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

您的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选项) ,然后在您自己的响应中重新发送有趣的HTTP标头(请参阅header函数) )

看一下“ curl”功能,它们提供了您需要的一切。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM