Heim > Fragen und Antworten > Hauptteil
Ich speichere die Anzahl der Anmeldefehler und die Zeit in der Sitzung. Wenn die maximale Anzahl an Fehlern erreicht ist, kann ich mich nicht anmelden. Nach dem Löschen der Cookies kann ich mich jedoch weiterhin anmelden. Wie soll ich es lösen? Oder gibt es eine andere Möglichkeit, die Anzahl der Anmeldungen zu begrenzen? Danke!
给我你的怀抱2017-05-31 10:35:27
用memcache 或者 redis 做缓存控制
$key = 登录账户
$value = 登录失败次数
$this->set($key,$value);
高洛峰2017-05-31 10:35:27
像你这种情况,只能通过全局缓存来处理了。如果你要控制某用户名的登录次数,那么就
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.纳入到数据库登录信息表结构
这样子的话就再加一列超时时间
实现的方法无数种,主要看实际场景和资源。