1

大家好,我需要一些建议。

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

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

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

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

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

人们对保护此页面有何想法?

4

2 回答 2

5

我过去解决这个问题的方法是执行以下操作

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

这应该有助于减少/消除用户刷新的影响。当我过去遇到这种情况时,这是由于人们将逻辑放在输出页面上,而这些逻辑实际上应该在用户没有显示的页面之一上(由于他们默默地重定向)

于 2013-04-03T08:38:28.647 回答
1

我建议您confirmation_email_sent在数据库中的订单表中添加一个 -column,然后在您第一次发送电子邮件时设置此标志。如果用户刷新页面,您会注意到此标志已设置,然后可以跳过发送电子邮件。如果除了电子邮件发送之外还有其他副作用,那么可能应该以相同的方式减轻这些副作用。

于 2013-04-03T08:27:06.063 回答