【问题标题】:POST in PHP AND redirect the user to that page?在 PHP 中发布并将用户重定向到该页面?
【发布时间】:2011-07-29 14:27:05
【问题描述】:

我有点困惑。如何将数据发布到 URL,然后将用户的浏览器重定向到该位置 - 一次操作?

我明白了

header('Location: page.php?' . http_build_query($_POST)); 

但那是 GET,而不是 POST,而且人们认为这是非常糟糕的做法 - PHP open another webpage with POST data(为什么?)

我笨拙的工作流程包括设置一个表单,然后通过 javascript 提交它 - 任何事情都必须比这更好......

我想我可以做一组 header() stmts,但是这个动作发生在页面被生成后的用户方式上,所以我不认为这会起作用

【问题讨论】:

  • 为什么不直接将 POST 发送到您需要将用户发送到的页面?
  • @rasika,是的 - 这就是我想要做的。它不是一种形式。接收脚本需要发布到它的数据。如果我在我的页面上显示了一个 html 表单,并将其提交到该位置,它工作正常 - 为什么我不能直接在 php 中做同样的事情? @deceze @end_Newbie_Dev ?

标签: php post redirect http-post


【解决方案1】:

不能重定向 POST 请求。就如此容易。任何重定向都会变成 GET 请求。

如果您想接收 POST 数据,然后将该数据发送到另一个页面,您有两种选择:

  • 如果两个页面在同一个服务器,使用session保存数据服务器端,不要让客户端带过来
  • 如果目的地在另一台服务器上,并且您需要将客户端与数据一起发送到那里,请像您一样设置另一个中间表单

【讨论】:

  • 那么最好的方法是什么。我有一个带有链接的页面,其中显示 n 我需要的是当用户单击链接 1 时 - 信息被发布到一个 url(其他地方)并且用户的浏览器被重定向到它。当他点击链接 2 时,一组不同的信息被发布到同一个 url),他也被重定向到同一个 url。你明白我的意思吗@deceze?
  • @Frank 这一切都在同一台服务器上,这些都是你的网站吗?还是您需要将数据发送到不同的服务器?
  • 感谢@deceze - 不,链接指向其他人的服务器。我的用户需要“去”那里。我可以通过一大堆表单来做同样的事情,并在 html 上隐藏数据并响应用户的点击,但我觉得应该有更好的方法!
  • @Frank 那么不,没有别的办法。 POST 请求只能由客户端发起,服务器不能指示客户端在其他地方发布数据(这在安全方面是一件好事!)。您只能制作带有隐藏字段的表单并要求用户提交,或通过 Javascript 自动提交。我只需将其设置为 “用户,我们现在要将您发送到第 3 方站点。请最后一次确认此数据并在您准备好后点击提交,否则点击取消” ,或类似的东西。
  • @deceze - 感谢您的明确解释。我会为每个链接滚动表单,但我还需要发布一些我不想输出到显示的 htkl 中的秘密数据。你对如何做到这一点有什么建议吗?
【解决方案2】:

在您离开页面之前使用 AJAX 保存数据。使用您返回的答案在当前页面内触发到新网址的重定向。不要害怕 Javascript 和 ajax。试试这个轻量级的 AJAX 库:http://www.openjs.com/scripts/jx/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 2011-12-25
    相关资源
    最近更新 更多