带重定向参数的PHP重定向
我有一个网页。该网页将用户重定向到另一个网页,或多或少通过以下方式:
<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变量的方法^^
提前致谢!
回答:
您可以CAN标头重定向POST请求,并包含POST信息。但是,您需要显式返回HTTP状态代码307。浏览器将302视为带有GET的重定向,而忽略了原始方法。HTTP文档中明确指出了这一点:
- https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.8
实际上,这意味着在PHP中,您需要在重定向位置之前设置状态代码:
header('HTTP/1.1 307 Temporary Redirect'); header('Location: anotherpage.php');
但是,请注意,根据HTTP规范,用户代理必须询问用户是否可以将POST信息重新提交到新URL。实际上,Chrome不会询问,Safari也不会询问,但是Firefox会向用户显示一个弹出框,以确认重定向。取决于您的操作限制,也许可以,尽管在一般使用情况下,它肯定会引起最终用户的困惑。
以上是 带重定向参数的PHP重定向 的全部内容, 来源链接: utcz.com/qa/435359.html