document.getElementByI-6ren">
gpt4 book ai didi

带有 Post 参数的 PHP 重定向

转载 作者:IT王子 更新时间:2023-10-28 23:50:00 26 4
gpt4 key购买 nike

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

<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 变量的方法 ^^

提前致谢!

最佳答案

您可以在 header 中重定向 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 会向用户显示一个确认重定向的弹出框。根据您的操作限制,这可能没问题,但在一般使用情况下,它肯定有可能给最终用户造成混淆。

关于带有 Post 参数的 PHP 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2865289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com