好久没更新了,来一篇,一个小功能
看看需求:除去验证码登录,一般的账号密码登录的时候往往会设置各种限制,现在来捋捋这个账号冻结小功能。
功能逻辑:
直接上代码。原生的tp,laravel改造下直接就可以用了
- <?php
- require("conn.php");
- require("function.php");
- session_start();
- //用户登录验证,登录次数>=3,账户冻结;24小时自动解冻
- $uid=guolv(trim($_POST['uid']));
- $pass=guolv(trim($_POST['pass']));
- //uid和pass根据自己情况获取
- //检查用户是否存在
- $row=$mysql->query("select * from admindata where `uid`={$uid} limit 1");
- $time=date("y-m-d h:i:s");
- if(empty($row['err_time'])){
- //err_time为空,直接进行密码校验
- $login=$mysql->query("select * from admindata where `uid`={$uid} and `pass`={$pass} limit 1");
- if($login){
- echo "登录成功,设置跳转";//登录成功执行的动作
- }else{
- $count=$login['err_count'];
- $mysql->query("UPDATE admindata SET `err_time`={$time},`err_count`={$count}+1 where `uid`={$uid}");
- //账号密码不对其他操作可以写在下方
- }
- }else{
- //如果err_time不为空
- $err_time=$login['err_time'];
- $hour=$hour=floor((strtotime($time)-strtotime($err_time))%86400/3600);//计算时间差
- $count=$login['err_count'];
- if($hour<24&&$count>3){
- //24小时以内,错误次数大于3 账户冻结
- echo "您的账户已经被冻结,请联系网站管理员";//可以改为其他提醒方式
- exit;
- }else{
- //大于24小时,自动解除冻结,重置err_time和err_count的值
- $mysql->query("UPDATE admindata SET `err_time`='null',`err_count`='0' where `uid`={$uid}");
- $login=$mysql->query("select * from admindata where `uid`={$uid} and `pass`={$pass} limit 1");
- if($login){
- echo "登录成功,设置跳转";//登录成功执行的动作
- }else{
- //解除冻结后,账号密码错误的情况,更新数据库,返回登录页
- $count=$login['err_count'];
- $mysql->query("UPDATE admindata SET `err_time`={$time},`err_count`={$count}+1 where `uid`={$uid}");
- echo "<script type=\"text/javascript\">document.location(\"login.php\",301);</script>";
- }
- }
- }
- ?>
嗯,大概就是这样吧。延展性自己添加就可以
评论一下
上一篇:
Thinkphp6-自定义指令
友情提示:垃圾评论一律封号...