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

PHP重定向与POST数据

郭阳曜
2023-03-14
问题内容

我对此主题进行了一些研究,并且有些专家说这是不可能的,因此我想寻求替代解决方案。

我的情况:

A页:[checkout.php]客户填写帐单明细。

网页B:[process.php]生成发票编号并将客户详细信息存储在数据库中。

网页C:[thirdparty.com]第三方付款网关(仅接受过帐数据)。

客户填写其详细信息,然后在A页中设置购物车,然后在B页中过帐。在process.php中,将过帐的数据存储在数据库中并生成发票编号。之后,将客户数据和发票号过帐到thirdparty.com付款网关。问题是在页面B中执行POST。cURL能够将数据发布到页面C,但是问题是页面未重定向到页面C。客户需要在页面C上填写信用卡详细信息。

第三方支付网关确实给了我们API示例,该示例是将发票编号与客户详细信息一起过帐。我们不希望系统生成多余的发票编号。

有什么解决办法吗?我们当前的解决方案是让客户在A页中填写详细信息,然后在B页中创建另一个显示所有客户详细信息的页面,用户可以单击CONFIRM按钮以发布到C页。

我们的目标是让客户只需单击一次即可。

希望我的问题清楚:)


问题答案:

在页面B上生成一个表单,并将所有必需的数据和操作设置为页面C,然后在页面加载时使用JavaScript提交表单。您的数据将被发送到C页,而不会给用户带来任何麻烦。

这是唯一的方法。重定向是一个303HTTP标头,您可以阅读,但我将引用其中的一些内容:

可以在不同的URI下找到对请求的响应,并且应该使用该资源上的GET方法来检索。存在此方法主要是为了允许POST激活的脚本的输出将用户代理重定向到所选资源。新URI不能替代原始请求的资源。303响应一定不能被缓存,但是对第二个(重定向的)请求的响应可能是可缓存的。

实现您正在做的事情的唯一方法是使用一个将用户转到页面C的中间页面。以下是有关如何实现此目标的小片段/简单片段:

<form id="myForm" action="Page_C.php" method="post">
<?php
    foreach ($_POST as $a => $b) {
        echo '<input type="hidden" name="'.htmlentities($a).'" value="'.htmlentities($b).'">';
    }
?>
</form>
<script type="text/javascript">
    document.getElementById('myForm').submit();
</script>

您还应该在noscript标记内使用一个简单的“确认”表单,以确保没有Javascript的用户能够使用您的服务。



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

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

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

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

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

  • 我想知道301和307重定向之间的区别。 我希望通过自制url重定向器生成反向链接,我希望任何“链接果汁”或“页面排名果汁”都能直接从原始主页流向最终url,但如果其中一个原始主页出现问题,我希望能够通过删除该特定页面的重定向链接来关闭该链接。有道理? 我的理解是,301是永久性的,这意味着谷歌将看到301并更新其缓存的URL作为最终目的地,而不管我以后是否取消重定向。 如果我使用307,它将不会