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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值