Php 防止用户在签出页面之间跳转

Php 防止用户在签出页面之间跳转,php,security,nonce,Php,Security,Nonce,我正在创建一个有4个页面的签出过程,但是我担心用户可能会试图返回到签出的前几页,修改并重新提交信息,试图操纵信息 我听说过nonces,但我真的不能完全相信它。我如何将nonce与checkout链接?这将如何防止一个人使用url跳转到签出过程的随机页面(而不是使用浏览器上的“返回”箭头),服务器端代码不会在调用该页面时为该页面创建新的nonce,从而该人仍然能够修改信息吗 我要找的是一个人1。不能随机跳转到签出过程的任何页面(例如:在主页,然后跳转到签出的最后一页)。和2。无法返回到结账流程的

我正在创建一个有4个页面的签出过程,但是我担心用户可能会试图返回到签出的前几页,修改并重新提交信息,试图操纵信息

我听说过nonces,但我真的不能完全相信它。我如何将nonce与checkout链接?这将如何防止一个人使用url跳转到签出过程的随机页面(而不是使用浏览器上的“返回”箭头),服务器端代码不会在调用该页面时为该页面创建新的nonce,从而该人仍然能够修改信息吗

我要找的是一个人1。不能随机跳转到签出过程的任何页面(例如:在主页,然后跳转到签出的最后一页)。和2。无法返回到结账流程的上一页。


我正在寻找一个非常线性的过程,用户必须从某个点开始(例如:某个签出按钮),否则他们将无法访问任何签出页面。他们还必须按照正确的顺序完成每个结账步骤。您对如何实现这一点有何想法?

您的用户应该能够返回到上一步,然后继续结账过程。我认为您可能有“业务需求”存在问题。我目前验证所有信息的方法是在结帐的最后一步,我根据输入的信息重新计算所有成本,如果某些信息不加在一起,则会导致错误,并删除数据库中有关当前结帐的所有信息,以便重新开始结帐。这是一种很好的方法吗?一个nonce可以防止多次提交。所以即使他们真的回去了,也没用。其思想是生成一个数字并将其存储在会话或数据库中。您可以将其作为隐藏字段包含在表单中。如果提交时数字匹配,则接受表单并清除会话或db值。如果用户回击,表单和该nonce值将在表单中。但是,由于nonce值不再存在于会话或数据库中,因此您知道表单已重新提交,并且存在无效。也有一些方法可以处理日期,这样你就可以散列一个日期,并知道表格bbq有多旧等等