使用重定向POST到新页面的最佳做法?

时间:2012-02-09 05:11:39

标签: php post redirect http-headers

我正在尝试解决类似这样的工作流程:(在PHP中)

  1. 用户在我的购物车中输入订单信息。
  2. 订单被捕获并存储到我的数据库(没有信用卡信息)
  3. 用户被重定向到authorize.net的SIM页面进行付款
  4. 当前设置:

    shoppingcart.php - 收集用户送货信息/ etc

    storeorder.php - 将订单存储在我的数据库中,然后使用相应的必需authorize.net POST字段组装表单

    简而言之,用户最终必须查看不必要的中间页面,他们必须点击"付款"表单提交按钮,然后将它们发送到authorize.net。

    组合这些步骤的最佳做法是什么? (接收POST,在我的数据库中存储信息,然后使用新的POST字段自动重定向到authorize.net而无需任何用户交互)

3 个答案:

答案 0 :(得分:1)

请勿干扰用户的钱!
即使您不想存储信用卡详细信息,您的网站也可能遭到入侵,攻击者也会获得该信息。

  1. 用户在我的购物车中输入订单信息。
  2. 订单通过authorize.net的SIM卡页面进行处理
  3. authorize.net通过付款详情与您的网站联系。
  4. 是正确的方式。
    世界上的每个网站都以这种方式运作。所以你必须这样做。不要把自己当成一个聪明的王牌。

答案 1 :(得分:0)

用户是否必须在authorize.net页面上执行任何类型的输入,或者您的表单是否提供了所有需要的信息?如果您生成所有信息,那么最简单的方法是通过对authorize.net的cUrl调用将数据直接推送到它们并检查返回状态代码/输出以查看它是否成功等。

如果用户仍需输入结算明细,请使用以下方法。

将帖子发布到/somepage.php

somepage.php运行它的处理,一旦处理完成就在底部运行添加标题(“Location:https://www.authorize.net/dopaymenthere”);

请确保您仍然回显此页面上的付款按钮,以防万一用户做了一些古怪的事情,他们强制重定向停止等等。这样看起来不像是破坏了代码,但对于很少有异常与他们的浏览器不同,你仍然可以优雅地处理它们

PS:这只能通过将post变量连接为get请求来实现,假设authorize.net将把get请求作为变量处理。

在不使用get请求的情况下执行此操作的非常简单的方法是使用javascript通过在dom上提交表单...这样您就可以向用户显示处理订单消息。并使用嵌入式隐藏表单将它们直接发布到authorize.net,以防您的处理时间超过预期等。

在processing.php页面的jquery术语中,你会有类似的东西:

echo $form; // HTML form with all it's values required by authorize.net
echo "<h1>Processing your request</h1>";
<script type='text/javascript'>$(document).ready(function(){$('#hiddenformid').submit();});</script>

答案 2 :(得分:0)

shoppingcart.php上,您可以为Checkout设置一个按钮。按下提交用户操作。 {POST}用户结帐按钮Do not save item prices/quantity in hidden fields.可以保存数据库中的所有信息,并在PHP Post条件下创建HTML表单,为authorize.net设置值并将标题重定向到PAYMENT页面。