当前位置:Gxlcms > PHP教程 > 如何限制验证码只可使用一次

如何限制验证码只可使用一次

时间:2021-07-01 10:21:17 帮助过:11人阅读

假设有个活动,已实现的是:每个账号只能参与一次。
在有验证码的情况下,如果某人通过获取一次验证码后,通过提交相同的验证码,切换不同账号进行参与活动。
这种做法是不是可以实现的,如果是,如何避免呢!验证码和账号通过一些加密绑定,提交的时候验证?


回复讨论(解决方案)

验证码 是动态产生,实时校验的
不存在你说的现象

不同账号进行参与活动,当然是允许的

验证码 只不过是给用户带来一点麻烦而已

我比较好奇,换帐号也不能参加那你们是怎么判断参加资格的?

换帐号session就不同了,因为退出时是销毁原来session的
session不同,验证码自然就不同了




嗯,我可能表达不好,我的意思是这样的。不同账号是可以参加的,A使用账号A,通过接口获取验证码后,保存在SESSION里,这个时候,A通过验证成功后,A继续切换账号B,这个时候不获取验证码的话,直接提交原来的验证码也可以验证通过?(假设是恶意用户写的程序)

应该在验证成功后,马上销毁SESSION,就可以防止了?

你还是一根筋,请问A帐号如何换B帐号呢?要么退出、要么关闭浏览器、要么换浏览器
一个session只对应一个帐号的一次登陆,是退出的时候销毁session??这个事不会说之前没做吧?

客户端只能得到cookie,是不能改session里面的值,不要把session里面的东西存进cookie就行了

你的验证码是固定不变的?

你还是一根筋,请问A帐号如何换B帐号呢?要么退出、要么关闭浏览器、要么换浏览器
一个session只对应一个帐号的一次登陆,是退出的时候销毁session??这个事不会说之前没做吧?

客户端只能得到cookie,是不能改session里面的值,不要把session里面的东西存进cookie就行了

我的登录不是SESSION的,只采用了COOKIES!
那假设我用的是SESSION,我的验证码存的SESSION和用户登录保存的SESSION有关的?

很晕……无言

可以这么做呢,在数据库中加一个验证码的字段设唯一属性,只要A登录就把验证码存入A账户的验证码的,这样不是就可以绑定了

不知道你的具体实现,建议session或cookies在用户输入验证码之后,即刻销毁当前值即可。
可把验证码搞的长一些,比如5-6位,以减少机制上带来的重复。
希望对你有帮助!!!

这样吧,提供一个思路。

将已经使用过的验证码写入数据表,然后每次用户提交验证码的时候,会进行查询一次数据库,有一个字段是区别验证码是否已经使用。这样就可以防止验证码重复,类似于邀请码。

人气教程排行