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

带重定向参数的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会向用户显示一个弹出框,以确认重定向。取决于您的操作限制,也许可以,尽管在一般使用情况下,它肯定会引起最终用户的困惑。



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

  • 问题内容: 在flask中,我可以这样做: 并且如果foo.html包含,页面将会显示。但是,如果有一条通往foo的路线怎么办: 在这种情况下,如果我仍然希望这种逻辑发生,那么进入foo.html的唯一方法是通过: 因此,如何使该变量传递到路由,这样我不必在加载路由之前重写重写该路由计算的逻辑代码? 问题答案: 你可以将消息作为显式URL参数传递(正确编码),也可以在重定向之前将消息存储到(coo

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

  • 问题内容: 我在页面上发生了一个jQuery Ajax请求。在PHP方面,我正在检查会话是否处于活动状态并正在执行某些操作。如果会话不活跃,我想将用户重定向到php中的另一个页面(header redirect)。我该怎么做。 我知道如何在javascript中实现它(即,如果session_fail然后更改window.location,但是我可以在php / cakephp中做些什么 问题答案

  • 问题内容: PHP是否可以在执行函数后进行重定向调用?我正在创建一个函数,希望将其重定向到位于同一根文件夹中的文件。能做到吗 问题答案: 是的,您将使用标题功能。 在此之后立即调用是一个好习惯,这样就不会执行其下面的代码。 另外,从文档中: 请记住,必须先通过常规HTML标记,文件中的空白行或从PHP发送任何实际输出,然后调用header()。使用include()或require(),函数或另一

  • 我有一个超文本标记语言登录页面,其中我有一个管理和用户的单选按钮,根据它,如果用户选择管理员,那么它应该重定向到管理员登录页面,如果他选择用户,那么它应该转到用户登录页面。 html登录页面如下: 用户的admin_login.php页面如下所示: 会话_start(); $email=$_POST["email"]; $psw=$_POST["psw"]; $name=“”; 包括db_conf