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

!<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
      <form class="" action="formhander" method="post">
          用户名:<input type="text" name="username" value=""><br/>
          密码:<input type="text" name="pwd" value=""><br/>
          <input type="submit" value="登录">
      </form>
  </body>
</html>

       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

发布了35 篇原创文章 · 获赞 7 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_23586923/article/details/94628967
今日推荐