一尘不染

带重定向参数的PHP重定向

javascript

我有一个网页。该网页将用户重定向到另一个网页,或多或少通过以下方式:

<form method="post" action="anotherpage.php" id="myform">

    <?php foreach($_GET as $key => $value){
    echo "<input type='hidden' name='{$key}' value='{$value}' />";
    } ?>

</form>
<script>

    document.getElementById('myform').submit();

</script>

好吧,您知道,我要做的是将GET参数转换为POST参数。不要告诉我这很不好,我知道我自己,这也不是我真正要做的,重要的是我从数组中收集数据并尝试通过POST将其提交到另一个页面。但是,如果用户关闭了JavaScript,它将无法正常工作。我需要知道的是:有没有一种方法可以通过PHP传递POST参数,以便重定向也可以通过PHP方法(header('Location: anotherpage.php');)完成?

对我来说,通过POST传递参数非常重要。我无法使用$ _SESSION变量,因为该网页位于另一个域上,因此$ _SESSION变量有所不同。

无论如何,我只需要一种用PHP传送POST变量的方法^^

提前致谢!


阅读 1762

收藏
2020-05-01

共1个答案

一尘不染

您可以CAN标头重定向POST请求,并包含POST信息。但是,您需要显式返回HTTP状态代码307。浏览器将302视为带有GET的重定向,而忽略了原始方法。HTTP文档中明确指出了这一点:

实际上,这意味着在PHP中,您需要在重定向位置之前设置状态代码:

    header('HTTP/1.1 307 Temporary Redirect');
    header('Location: anotherpage.php');

但是,请注意,根据HTTP规范,用户代理必须询问用户是否可以将POST信息重新提交到新URL。实际上,Chrome不会询问,Safari也不会询问,但是Firefox会向用户显示一个弹出框,以确认重定向。取决于您的操作限制,也许可以,尽管在一般使用情况下,它肯定会引起最终用户的困惑。

2020-05-01