欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

php结合redis限制用户登入密码错误次数

程序员文章站 2022-04-05 08:41:58
就用原生的面向过程写了个小dome ,数据库信息用数组代替了. 整体思路是这样的,具体怎么用,具体的自己放框架里改改优化一下就 ok的。 php代码: connect(&...

就用原生的面向过程写了个小dome ,数据库信息用数组代替了.
整体思路是这样的,具体怎么用,具体的自己放框架里改改优化一下就 ok的。
php代码:

connect('127.0.0.1', 6379);
//模拟数据库信息
$userinfo = array('xxx'=>'000000','yyy'=>'111111');

//接受用户输入信息
$name = $_POST['username'];
$passwd = $_POST['userpasswd'];

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

//判断密码是否正确
if($passwd != $userinfo[$name]){
    //当前错误不是第一次  将错误次数加 1
    if($redis->exists($name)){
        $redis->incr($name);
    }else{
        //第一次错误将错误信息存入redis中
        $redis->set($name,1);
    }
    echo '密码不正确';
    exit();
}else{
    echo '成功';
}

html代码

<meta charset="UTF-8" />
<title></title>
<form action="redisLogin.php" method="post">
	<input name="username" placeholder="请输入用户名" type="text" /> <input name="userpasswd" placeholder="请输入密码" type="text" /><button type="submit">登入</button></form>