当前位置: 首页 > 面试题库 >

具有Post参数的PHP重定向

汝志
2023-03-14
问题内容

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

<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会向用户显示一个弹出框,以确认重定向。取决于您的操作约束,也许可以,尽管在一般使用情况下,它肯定有可能导致最终用户感到困惑。



 类似资料:
  • 问题内容: 我对此主题进行了一些研究,并且有些专家说这是不可能的,因此我想寻求替代解决方案。 我的情况: A页:[checkout.php]客户填写帐单明细。 网页B:[process.php]生成发票编号并将客户详细信息存储在数据库中。 网页C:[thirdparty.com]第三方付款网关(仅接受过帐数据)。 客户填写其详细信息,然后在A页中设置购物车,然后在B页中过帐。在process.ph

  • 问题内容: 我有一个网页。该网页将用户重定向到另一个网页,或多或少通过以下方式: 好吧,您知道,我要做的是将GET参数转换为POST参数。不要告诉我这很不好,我知道我自己,这也不是我真正要做的,重要的是我从数组中收集数据并尝试通过POST将其提交到另一个页面。但是,如果用户关闭了JavaScript,它将无法正常工作。我需要知道的是:有没有一种方法可以通过PHP传递POST参数,以便重定向也可以通

  • 我想重定向用户时,页面打开和张贴参数。我试过这个: 是否可以重定向用户并发布一些参数?

  • 问题内容: 我有一个在线网关,要求将HTML表单与隐藏字段一起提交。我需要通过没有任何HTML形式的PHP脚本来执行此操作(我具有数据库中隐藏字段的数据) 要通过GET发送数据,请执行以下操作: 并通过POST发送数据? 问题答案: 您无法使用PHP执行此操作。 正如其他人所说,您可以使用cURL-但是PHP代码成为客户端而不是浏览器。 如果必须使用POST,那么唯一的方法就是使用PHP生成填充的

  • 问题内容: 通过以下脚本触发: 该脚本在 Mac上 成功运行,并且jenkins作业确实被触发。如何使此脚本在 Windows上运行 ?在 Windows 上运行以上PHP脚本时出现以下错误? 。另外,有没有更好的方法在PHP中执行cURL?看这个:http : //php.net/manual/en/book.curl.php,有人可以 根据上面的PHP脚本 (对于 Windows )中 我的c

  • 问题内容: 我正在使用PHP,并且正在制作一个表单要发布到的操作页面。该页面检查错误,然后,如果一切正常,则将其重定向到已发布数据的页面。如果没有,我需要将它们重定向到错误和POST变量所在的页面。这是其工作原理的要点。 HTML看起来像这样… action.php看起来像这样… 如果发生错误,我需要将其重新发布回第一页。我不能使用GET,因为输入太大。如果可能,我不想使用SESSION。这可能吗