Coldfusion"谢谢"页面允许用户无限次刷新

mat*_*hew 1 cfml

嗨,大家好,我需要一些建议.

当成功发布包含在url字符串中的订单时,我们的支付网关会发回一些数据.

唯一的问题是用户刷新页面并在每次刷新感谢页面时通过一堆cfmail命令发送!

这对于我们的安全性更好,在加载此页面后立即设置重定向到我们的主页,设置一种方法来停止用户多次加载页面或删除订单信息以便用户无法单击刷新?

以下是支付网关在成功交易时生成的示例网址.

http://www.ourwebsitename.com/ConfirmationPage.cfm?cartinfo=^XXXX^1&orderinfo=Customer^Name^Billing Name^Billing^Line^1^Town^Postcode^websitename^Order^Amount^&responsesitesecurity=SECUREHASHCODE&thisorderid=OURORDERID
Run Code Online (Sandbox Code Playgroud)

人们对保护此页面的想法是什么?

Sim*_*tal 5

我过去解决这个问题的方法是做以下事情

  1. 在显示用户的任何页面上,尽量不要使用任何实际执行任何操作的逻辑.仅在显示页面上显示逻辑
  2. 在结帐过程结束时,发送电子邮件,然后使用<cflocation>重定向到确认页面
  3. 将一些检查位添加到会话或用于跟踪用户的任何内容,以标记电子邮件已发送
  4. 如果您真的不希望用户重新发送两次电子邮件,请使用a <cflock>并确认#3中提到的标志未在其中标记<cflock>(以确保它没有被锁定它的进程发送)

这应该有助于减少/消除用户刷新的影响.当我在过去使用它时,这是因为人们在输出页面上放置逻辑应该是用户未显示的其中一个页面(由于它们默默地重定向)