我有一个生成礼品代码的后端,每个代码都有一定数量的用途。将这些内容提供给博主或其他任何人,他们的读者可以将代码兑换成促销项目。
我正在研究检查代码有效性的最佳方法,而不会发生碰撞/欺骗,或类似的事情。我需要1)验证代码2)收集送货信息
我的初稿是
A)通过表格检查代码,如果好,继续进行地址输入。收到输入后,保存代码和地址/名称等。
此操作失败,因为如果75使用代码有74次使用,则25人可以“验证”但尚未输入他们的地址,我们最终会有超过75次有效兑换。
我目前的解决方案看起来更像:
B)只需将代码作为信息收集表单中的第一个字段,并在输入有效代码时,ajaxify并对数据库进行实时检查。如果代码有效,则会显示表单的其余部分,并且代码的条目被“声明”半小时或其他内容。如果半小时内没有数据库条目,那么它就会被释放。
这看起来相当复杂,我想知道我是否需要对ajax进行限制,以确保人们不会强行执行有效的代码。
这种方法是否安全,和/或是否有任何其他明显的模式我都缺少此类应用程序?
答案 0 :(得分:6)
让每个人输入他们的礼物代码和地址,然后提交
在后端,验证地址和礼品代码。
如果礼品代码有效且没有用尽,请祝贺用户。否则向他们道歉并建议他们反正购买。
它必须比那复杂吗?
答案 1 :(得分:1)
为什么不只有一张包含所有信息的表格(兑换码和送货信息)?
然后,当用户以原子方式(使用数据库上的事务)提交时,检查它是否有效并提交用户的信息。
如果代码不再有效,只需显示“抱歉,您使用的兑换码已用完且不再有效”的消息。
答案 2 :(得分:1)
只是想补充一点,如果您担心强制尝试,您可以要求提供基于验证码或基于javascript的hashcash值以及礼品代码。如果你想尽可能不引人注意,你只能在第一次失败之后的后续尝试中要求这样做。
您可能会考虑的一件事是,在用户输入礼品代码后,创建一个中间页面,其中包含有关优惠的更多详细信息,显示剩余的申请数量,并提供有关完成优惠所需内容的一些信息(地址,信用卡,等等)。如果用户选择申请优惠,请在数据输入页面上进行10-15分钟倒计时(通过javascript更新)以获取地址和其他个人信息,以便用户知道如果他们没有输入他们的优惠可能会过期信息立即。
要考虑的另一件事是实施“取消”按钮,表示用户可以为其他用户提供优惠,而无需等待倒计时到期。
答案 3 :(得分:0)
您当前的解决方案看起来是正确的,但我认为您省略了将用户关联与代码关联的方法。尽管如此,为用户提供“保留”代码兑换的功能仍然是一个很好的解决方案。
答案 4 :(得分:0)
选项B似乎合理。只需使用验证码而不是试图限制它。 Captchas并不完美,但它比说三次误读代码然后被拒绝24小时尝试另一个代码的能力更不讨厌。如果您已经计划进行AJAXy,这将特别有效。
所以 -
用户将填写代码字段和验证码
您将确认验证码,然后确认代码。
一旦成功,用户将填写其他信息并提交。
使用这种方法,您可能也只能将代码锁定为更像5分钟(票务代理商样式)的代码,并在表单上显示一个通知用户的计时器。
答案 5 :(得分:0)
你的方法(通过表格检查代码,如果好,继续进行地址输入)看起来很合理。只需将它与B的“代码”声称“半小时或其他什么”结合起来,一切都应该按预期工作。
那是:
答案 6 :(得分:0)
我们进行低端加密(RC4),并为此类事件添加了校验和。由于RC4生成有问题的字符集,我们还将其转换为HEX。这种组合相对安全且可自我检查。解密的值只是我们可以在数据库中验证的数字。这适用于我们的电子邮件提醒和礼券。