PHP中的HTTP POST请求

时间:2010-01-07 13:05:45

标签: php http post

如何重定向浏览器并在PHP中发送HTTP POST请求?如果您愿意,可以header("Location: file.php?foo=bar")个{i}个HTTP POST请求。

7 个答案:

答案 0 :(得分:5)

您不能 - HTTP不允许这样做 - 如果您想通过重定向传递参数,则必须将它们作为GET变量嵌入到URL中。

下进行。

答案 1 :(得分:3)

这不会重定向浏览器,但可以执行POST请求。

Curl Manual

Curl POST Example

PHP POST Without Curl

要重定向浏览器,我建议使用Javascript。

执行POST和重定向的示例表单

 <FORM action="http://somesite.com/prog/adduser" method="post">
    <P>
    <LABEL for="firstname">First name: </LABEL>
              <INPUT type="text" id="firstname"><BR>
    <LABEL for="lastname">Last name: </LABEL>
              <INPUT type="text" id="lastname"><BR>
    <LABEL for="email">email: </LABEL>
              <INPUT type="text" id="email"><BR>
    <INPUT type="radio" name="sex" value="Male"> Male<BR>
    <INPUT type="radio" name="sex" value="Female"> Female<BR>
    <INPUT type="submit" value="Send"> <INPUT type="reset">
    </P>
 </FORM>

答案 2 :(得分:2)

我不确定为什么你会对此有任何需要,但不能用任何服务器端语言。

您可以使用jQuery等javascript库来使用帖子请求

来请求页面

答案 3 :(得分:1)

我不相信您可以通过在请求中间重定向来获取POST数据。你只限于GET。如果您希望浏览器发布POST内容,则需要构建<form>并提交。 (或使用AJAX请求。)

答案 4 :(得分:1)

PHP没有这样的东西。要完成您的示例,您只需简单地说$_GET['foo'] = 'bar'; include("file.php"),但不会更改提供给浏览器的网址。

类似的问题:Code Translation: ASP.NET Server.Transfer in PHP

答案 5 :(得分:1)

这个问题在这里被问到How do you POST to a page using the PHP header() function?

有人评论说,如果您已经拥有数据,为什么需要在任何地方发布数据,为什么不能只对该页面中的数据采取行动?

答案 6 :(得分:1)

如果您需要在重定向时传输数据而不在URL中显示数据,则可以使用$ _SESSION,首先将数据存储到会话中然后重定向页面,重定向后从会话中获取数据并销毁会话数据。

好的,如果你需要将数据传输到其他网站而不显示在URL中,你必须使用Javascript代替...就像将数据传输到payPal一样。只需创建一个表单并编写一个javascript代码即可在页面加载时自动提交表单。下面是示例代码:

<form name="myform" action="handle-data.php">
Search: <input type='text' name='query' />
<a href="javascript: submitform()">Search</a>
</form>
<script type="text/javascript">
function submitform()
{
  document.myform.submit();
}
</script>