【问题标题】:Can I set a POST variable before redirecting to a new page? [duplicate]我可以在重定向到新页面之前设置 POST 变量吗? [复制]
【发布时间】:2011-08-03 06:50:28
【问题描述】:

可能重复:
How do you POST to a page using the PHP header() function?

例如,我需要在出错时将用户重定向到不同的页面,但我也想在该页面上发布一个值。

【问题讨论】:

    标签: php


    【解决方案1】:

    你能改用 $_SESSION 吗?

    $_SESSION['var'] = 'foo';
    //redirect
    

    【讨论】:

    • 嗯,我想过。但基本上,我会在出错时将它们发送回注册的第 2 步,但在第 2 步开始时,它会检查第 1 步中的 POST 按钮是否已设置
    • @Rob - 听起来您可能正在尝试将 $_POST 用于它不打算用于的东西。为了跟踪会话状态,我会改用 $_SESSION。您可能会以某种方式完成这项工作,但我通常不会想到 $_POST 变量会在请求中保留。
    【解决方案2】:

    在 action="" html 标记中,只需输入您将它们重定向到的地址。这也会将该值发布到该页面。

    【讨论】:

      【解决方案3】:

      执行重定向时,会发出 GET 请求。我不相信可以进行 POST 重定向。

      您可以修改代码以使用$_REQUEST 超级全局变量检查POST 和GET 请求。这样,您可以将重定向中所需的任何参数作为 GET 参数传递,并且仍然让您的 PHP 脚本获取它们。

      但是,如果您使用的是多步骤表单,那么使用会话变量可能是个好主意。这使您可以保存用户在会话的每个步骤中输入的信息,以便在他们返回上一步时轻松再次加载。

      【讨论】:

        【解决方案4】:

        您绝对不能同时发布和重定向。重定向意味着设置几个 HTTP 标头。但是,有几种解决方案可以满足您的需求。

        一个是将数据存储到 $_SESSION 并从那里检索它,如上面回答的那样。

        另一种方法是将表单与 PHP 放在一个单独的文件中,如果您在发布的数据中有错误,则将其包含在内,这样您就可以在当前 POST 中拥有所有变量,而无需重定向用户(并设置表单中的错误消息)。

        您可以考虑使用 AJAX 发布帖子并获取结果,然后您将使用 javascript 进行重定向。

        或者,如果您想要传递的变量/值不多,您可以在进行重定向时使用 GET。

        我相信还有其他选择。

        【讨论】:

          猜你喜欢
          • 2013-04-15
          • 2016-11-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-11
          • 2017-01-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多