PHP存储输入变量替代

时间:2014-02-04 11:49:27

标签: php post get

我正在制作付款流程/结帐系统,用户需要浏览3个单独的页面( chooseplan.php - > payment-details.php - > confirm.php )在结帐信息发送到paypal之前。

在第一页( chooseplan.php )中,用户需要选择定价计划,并将其发布到 payment-details.php 中形式,例如:

<input type='hidden' name='plan' value='enterprise'>

来自 payment-details.php 我正在通过$ _POST检索它以进行验证,然后再次将其放入输入标记中,只是为了能够将其发布到表单中(再次)到最后一页: confirm.php

我想知道是否存在另一种存储此变量的方式,而不是不断地重新发布它,在它经历的每个页面上验证并创建另一个输入字段。我不希望在url(GET)中看到变量。此外,没有JavaScript或会话。

2 个答案:

答案 0 :(得分:1)

您可以使用Cookie,但客户可以轻松修改它们(但表单数据也是如此)。

setcookie("plan", "plan id?", (time() + 3600));  /* Expires in 1 hour. */

然后您可以像这样检索计划:

echo $_COOKIE["plan"];

答案 1 :(得分:0)

会话是最好的方法,但如果您想提高整个事务的安全性,可以根据已选择的数据生成令牌,然后将该令牌保留在会话或数据库中。

然后你有两个选择,一个是发送带有新表单的令牌,包括隐藏的字段,在回来的路上,将令牌与你已经拥有的令牌进行比较,如果它不同,那么事情发生了,你就中止了;如果相同,则再次生成带有隐藏数据的令牌并将其与保存的令牌进行比较,如果它不相同,则中止。第二个选项是仅发送数据,没有令牌并保存一步。

当然,必须采取所有生成安全令牌的步骤。

在每个页面上,您将根据新信息生成新令牌。

我希望我能够清楚地解释自己的所有来回。