• php实现登录失败次数限制


    需求:同一个账号在同一个IP地址连续密码输错一定次数后,这个账号是会被锁定30分钟的。

    实现思路:

    1. 需要一个表(user_login_info)负责记录用户登录的信息,不管登录成功还是失败都记录。并且登陆失败还是成功需要能够区分开来。
    2. 每次登陆时,都先从user_login_info表查询最近30分钟内(这里假设密码错误次数达到5次后,禁用用户30分钟)有没有相关密码错误的记录,然后统计一下记录总条数是否达到设定的错误次数。
    3. 如果在相同IP下,同一个用户,在30分钟内密码错误次数达到设定的错误次数,就不让用户登录了。

    表设计:

      user_login_info表:

     CREATE TABLE `user_login_info` (
           `id` int(10) UNSIGNED PRIMARY KEY AUTO_INCREMENT  NOT NULL,
           `uid` int(10) UNSIGNED NOT NULL,
           `ipaddr` int(10) UNSIGNED NOT NULL COMMENT '用户登陆IP',
           `logintime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '用户登陆时间',
           `pass_wrong_time_status` tinyint(10) UNSIGNED NOT NULL COMMENT '登陆密码错误状态' COMMENT '0 正确 2错误'
       ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

     user表(用户表):
      CREATE TABLE `user` (
          `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
          `name` varchar(100) NOT NULL COMMENT '用户名',
          `email` varchar(100) NOT NULL,
          `pass` varchar(255) NOT NULL,
          `status` tinyint(3) UNSIGNED NOT NULL DEFAULT '1' COMMENT '1启用 2禁用',
           PRIMARY key(id)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
  • 相关阅读:
    代理模式之动态代理
    代理模式之静态代理
    基于Java类进行配置Spring
    Spring使用注解开发
    Spring的自动装配
    Bean的作用域
    Spring配置
    最全总结 | 聊聊 Python 办公自动化之 Excel(上)
    最全总结 | 聊聊 Python 数据处理全家桶(MongoDB 篇)
    最全总结 | 聊聊 Python 数据处理全家桶(Redis篇)
  • 原文地址:https://www.cnblogs.com/feixiablog/p/8177077.html
Copyright © 2020-2023  润新知