我是将登陆的错误次数和时间存到session,当达到最大错误次数时将无法登录,可是将cookie清空后仍然可以登录。请问应该怎么解决?或者有其它的方式限制登录次数吗?谢谢!
走同样的路,发现不同的人生
数据库加个字段,超过次数锁定账户...
用memcache 或者 redis 做缓存控制
$key = 登录账户
$value = 登录失败次数
$this->set($key,$value);
用ip和HTTP_USER_AGENT 来判断是否同一用户
像你这种情况,只能通过全局缓存来处理了。如果你要控制某用户名的登录次数,那么就1.针对keyvalue缓存统一数据结构key=value => 用户名={'登录次数':1},接下来无论用redis、memcache、mysql(建cache表,列[key value],索引hash key)直接$userinfo = $cacheobj->get('用户名')获取用户信息,判断登录次数,自增登录次数后$cacheobj->set('用户名', $userinfo)回写
2.纳入到数据库登录信息表结构给mysql用户登录表新增登录次数列,然后就是调用sql,获取,判断,自增,更新就欧了
如果要含时间纬度,那么
1.针对keyvalue缓存数据结构更新为用户名={'登录次数':1, '超时时间':时间戳},判断再加时间纬度的判断,超时将登录次数置为0
2.针对非mysql的keyvalue缓存(redis、memcache)直接$cacheobj->set('用户名', '登录次数', 超时时间)
3.纳入到数据库登录信息表结构这样子的话就再加一列超时时间
实现的方法无数种,主要看实际场景和资源。
数据库加个字段,超过次数锁定账户...
用memcache 或者 redis 做缓存控制
$key = 登录账户
$value = 登录失败次数
$this->set($key,$value);
用ip和HTTP_USER_AGENT 来判断是否同一用户
像你这种情况,只能通过全局缓存来处理了。如果你要控制某用户名的登录次数,那么就
1.针对keyvalue缓存
统一数据结构key=value => 用户名={'登录次数':1},接下来无论用redis、memcache、mysql(建cache表,列[key value],索引hash key)
直接$userinfo = $cacheobj->get('用户名')获取用户信息,判断登录次数,自增登录次数后$cacheobj->set('用户名', $userinfo)回写
2.纳入到数据库登录信息表结构
给mysql用户登录表新增登录次数列,然后就是调用sql,获取,判断,自增,更新就欧了
如果要含时间纬度,那么
1.针对keyvalue缓存
数据结构更新为用户名={'登录次数':1, '超时时间':时间戳},判断再加时间纬度的判断,超时将登录次数置为0
2.针对非mysql的keyvalue缓存(redis、memcache)
直接$cacheobj->set('用户名', '登录次数', 超时时间)
3.纳入到数据库登录信息表结构
这样子的话就再加一列超时时间
实现的方法无数种,主要看实际场景和资源。