用户登录失败后三次 锁定账号5分钟(tp5做的)

一、建表

   自增id        账户名       密码       登录次数     状态(1为锁定)            时间戳

二、思路

三、代码

登录页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录三次</title>
</head>
<body>
<form action="{:url('index/login')}" method="post">
    <table>
        <tr>
            <td>用户名</td>
            <td><input type="text" name="name"></td>
        </tr>
        <tr>
            <td>密码</td>
            <td><input type="password" name="pwd"></td>
        </tr>
        <tr>
            <td></td>
            <td><input type="submit" value="登录"></td>
        </tr>
    </table>
</form>
</body>
</html>

登录方法

<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
use think\Request;

class Index extends Controller
{
    public function login()
    {
        if(Request::instance()->isGet())
        {
            return view('login');
        }
        else
        {
            $name=input('post.name');
            $pwd=input('post.pwd');
            //查找用户登录的信息
            $arr=Db::table('deng3')->where(['name'=>$name])->find();
            //判断状态是否锁定
            if($arr['static'] ==1 )   //锁定时
            {
                //判断时间是否过时
                if(time()-$arr['time']>300)
                {
                    //取消锁定
                    $up['static']=0;
                    //改变状态
                    Db::table('deng3')->where(['name'=>$name])->update($up);
                }
                 else
                 {
                    echo '锁定5分请稍后登录';die;
                 }
            }
            //判断密码
            if($arr['pwd'] == $pwd)
            {
                echo '成功';
            }
            else
            {
                //有三次登录机会
                //小于三次时 次数递增
                if($arr['count']<3)
                {
                    $up['count']=$arr['count']+1;
                    Db::table('deng3')->where(['name'=>$name])->update($up);
                }
                else
                {
                    //次数大于3时   计数变为0
                    $up['count']=0;
                    //当前时间
                    $up['time']=time();
                    //状态锁定
                    $up['static']=1;
                    //更新参数
                    Db::table('deng3')->where(['name'=>$name])->update($up);
                }
                echo '失败';
            }
        }
    }
}



猜你喜欢

转载自blog.csdn.net/baiyawen1/article/details/81115011