在用户登陆时,如果登陆三次都失败,就需要输入验证码,前两次则不用输入,这样可以提高用户体验,又可以防止机器人猜测用户名、密码。
制作思路:需要找个地方存储用户登陆的失败次数,然后根据失败次数来判断是否需要输入验证码。这个地方有以下几种:
1.页面的js变量。
每失败一次加1,如果大于3次,则需要输入验证码。但是如果用户刷新页面,则变量值丢失,就不用输入验证码了。
2.Session或者Cookies。
同样的每失败一次加1。但是如果换浏览器,Session丢失,或者对Cookies做手脚,则变量值也会丢失。 当然可以对Cookies加密处理,如果取出来的数据不对,则直接让输入验证码。
3.ViewState
效果和页面js变量一样。刷新页面丢失。
4.存放到数据库用户表中。
可以记录用户登陆失败的IP、用户名、时间、次数等信息,然后进行判断。不过会导致同一个IP的都需要输入验证码,如果判断用户名的话,需要用户输入的用户名是正确的,不正确的话,则用IP好一些。
以上是几种方式,可以根据实际情况来处理。
我写了一个例子,用的第一个方法。比较简单。验证码是无刷新验证的。相关项目下载