PHP +Redis完成登录限制次数功能 TP5为例

1.准备工作,tp5框架、redis扩展库

        1.1redis扩展两个建议(两个任意选一个):

              composer require predis/predis(建议选);

              composer require xiucaiwu/tp5redis(我选的:我在做的时候发现这个库不全,给他完善了一下)

2.代码

         2.1应用扩展类库

use tp5redis\Redis;

        2.2登录界面

        2.2.1PHP

/*
    *登录界面
    */
    public function Login()
    {
      return $this->fetch();
    }

        2.2.2html

!

  
    
    
  
  
      
用户名:
密码:

       2.3 提交表单

/*
    * 提交表单
    */
    public function formhander()
    {
        $error_count_key = 'error_count_key:1';
        $userinfo = [
          'username'=>'fgc',
          'pwd'=>'123456'
        ]; // 模拟数据库中数据
        //接受用户输入信息
        $name = $_POST['username'];
        //var_dump($name);die;
        $passwd = $_POST['pwd'];

        //判断用户是否存在
        if($name !== $userinfo['username']){
            echo '用户名不存在';
            exit();
        }

        //判断是否已经错误三次
        if(Redis::get($error_count_key) >=3){
            //以错三次  为该用户设置操作等待时间  60秒
            Redis::expire($error_count_key,60);
            echo '请您1分钟后在登入吧';
            exit();
        }

        //判断密码和账号是否正确
        if($passwd == $userinfo['pwd']){
            echo '成功';
        }else{
            //不正确
            //判断当前redis中是否存在错误的次数
            if(Redis::exists($error_count_key)){
                Redis::Incr ($error_count_key);
            }else{
                //第一次错误将错误信息存入redis中
                Redis::set($error_count_key,1);
            }
            echo '密码不正确';
            exit();
        }

    }

这个代码还是有一些问题的,包括我引用的那个扩展。我后期会完善好再发上来的。如果大家对我写的有什么建议或者意见或者问题的话,可以加我的微信号:fvalyl或者发我邮箱:544942125@qq。com

你可能感兴趣的:(redis)