老莫的笔记本  
  
查看: 1268|回复: 0

登录以及验证码验证代码

[复制链接]

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
发表于 2018-8-23 22:37:24 | 显示全部楼层 |阅读模式
  1. <?php
  2. namespace app\admin\controller;
  3. use think\Controller;
  4. use think\Db;
  5. use think\Request;
  6. use app\admin\model\Admins;
  7. header("Content-type: text/html; charset=utf-8");
  8. class Account extends Controller
  9. {
  10.     public function login()
  11.     {
  12.         return $this->fetch();
  13.     }
  14.     public function dologin(Request $request)
  15.     {
  16.         // 在model之前 进行db直接操作的测试
  17.         // $lma = $request->param();
  18.         // $lmb =  Db::table('admins')
  19.         //         ->where([
  20.         //             'username' =>['=',$request->param('username')],
  21.         //             'password' =>['=', MD5($request->param('password'))]
  22.         //         ])
  23.         //          ->find();
  24.         
  25.         // return $lmb? $lma:false;
  26.         
  27.         // $where = ([
  28.         //             'username' =>['=',$request->param('username')],
  29.         //             'password' =>['=', MD5($request->param('password'))],
  30.         //         ]);
  31.         // 非空验证
  32.         if(!$request->param('username')){
  33.             exit( json($code=1,$msg='用户名不能为空'));
  34.         }
  35.         if(!$request->param('password')){
  36.             exit( json($code=1,$msg='密码不能为空'));
  37.         }
  38.         if(!$request->param('vercode')){
  39.             exit( json($code=1,$msg='验证码不能为空'));
  40.         }
  41.         // 验证码验证
  42.         if(!captcha_check( $request->param('vercode'))){
  43.             //验证失败
  44.             exit( json($code=1,$msg='验证码不正确'));
  45.         }
  46.         // 只根据用户名拿数据
  47.         $where = function ($query) use($request){
  48.             $query->where([
  49.                     'username' =>['=',$request->param('username')],
  50.                 ]);
  51.         };
  52.         //在这有个坑点 返回值 只能是数组、字符串、不能反回一个对象
  53.         $lmb = admins::get($where);
  54.         
  55.         //登录用户验证
  56.         if(!$lmb){
  57.             exit( json($code=1,$msg='登录失败,该用户不存在'));
  58.         }
  59.         // 登录用户密码验证
  60.         if( MD5($request->param('password')) !== $lmb->getData()['password'] ){
  61.             exit( json($code=1,$msg='登录失败,密码错误'));
  62.         }
  63.         // 判断该用户是否被禁用
  64.         if($lmb->getData()['status']==1){
  65.             exit( json($code=1,$msg='该用户已被管理员禁用'));
  66.         }
  67.         
  68.         // 成功登陆 缓存用户登录信息
  69.         session('admin',$lmb->getData());
  70.         $code =0;
  71.         $msg = '登陆成功等待跳转        return json($code=0,$msg,2,$lmb);
  72.       
  73.     }
  74.     public function ts()
  75.     {
  76.         //value 字段 默认值
  77.         dump(
  78.             Db::table('admins')
  79.             ->where([
  80.                 'username'=>['=','admin'],
  81.                 'id' =>['=',1]
  82.             ])
  83.             ->find()         //这个find() 只能查询到一条结果
  84.         );
  85.     }
  86.     public function tk()
  87.     {
  88.         $where = function ($query){
  89.             $query->where([
  90.                     'id' =>['=',1],
  91.                     // 'username' =>['=','admin'],
  92.                     // 'id' =>['=',1],
  93.                 ]);
  94.         };
  95.         $lmb = admins::get($where);
  96.         dump($lmb->getData()['username']);
  97.     }
  98. }
复制代码

再贴一个验证码的前端代码代码
login.html  【容我精炼一下】
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.   <meta charset="utf-8">
  5.   <title>登入 - layuiAdmin</title>
  6.   <meta name="renderer" content="webkit">
  7.   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  8.   <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  9.   <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
  10.   <link rel="stylesheet" href="__CSS__/layui/css/layui.css?v=6" media="all">
  11.   <link rel="stylesheet" href="__CSS__/style/admin.css" media="all">
  12.   <link rel="stylesheet" href="__CSS__/style/login.css" media="all">
  13. </head>
  14. <body>
  15.   <div class="layadmin-user-login layadmin-user-display-show" id="LAY-user-login" style="display: none;">
  16.     <div class="layadmin-user-login-main">
  17.       <div class="layadmin-user-login-box layadmin-user-login-header">
  18.         <h2>layuiAdmin</h2>
  19.         <p>layui 官方出品的单页面后台管理模板系统e</p>
  20.       </div>
  21.       <div class="layadmin-user-login-box layadmin-user-login-body layui-form">
  22.         <div class="layui-form-item">
  23.           <label class="layadmin-user-login-icon layui-icon layui-icon-username" for="LAY-user-login-username"></label>
  24.           <input type="text" name="username" id="LAY-user-login-username" lay-verify="required" placeholder="用户名" class="layui-input">
  25.         </div>
  26.         <div class="layui-form-item">
  27.           <label class="layadmin-user-login-icon layui-icon layui-icon-password" for="LAY-user-login-password"></label>
  28.           <input type="password" name="password" id="LAY-user-login-password" lay-verify="required" placeholder="密码" class="layui-input">
  29.         </div>
  30.         <div class="layui-form-item">
  31.           <div class="layui-row">
  32.             <div class="layui-col-xs7">
  33.               <label class="layadmin-user-login-icon layui-icon layui-icon-vercode" for="LAY-user-login-vercode"></label>
  34.               <input type="text" name="vercode" id="LAY-user-login-vercode" lay-verify="required" placeholder="图形验证码" class="layui-input">
  35.             </div>
  36.             <div class="layui-col-xs5">
  37.               <div style="margin-left: 10px;">
  38.                 <img src="{:captcha_src()}" class="layadmin-user-login-codeimg"  onclick="this.src='/admin.php/captcha?id='+Math.random()" id="lm-yz" alt="验证码" title="点击刷新" >
  39.               </div>
  40.             </div>
  41.           </div>
  42.         </div>
  43.         <div class="layui-form-item" style="margin-bottom: 20px;">
  44.           <input type="checkbox" name="remember" lay-skin="primary" title="记住密码">
  45.           <a href="forget.html" class="layadmin-user-jump-change layadmin-link" style="margin-top: 7px;">忘记密码?</a>
  46.         </div>
  47.         <div class="layui-form-item">
  48.           <button class="layui-btn layui-btn-fluid" lay-submit lay-filter="LAY-user-login-submit">登 入</button>
  49.         </div>
  50.         <div class="layui-trans layui-form-item layadmin-user-login-other">
  51.           <label>社交账号登入</label>
  52.           <a href="javascript:;">
  53.             <i class="layui-icon layui-icon-login-qq"></i>
  54.           </a>
  55.           <a href="javascript:;">
  56.             <i class="layui-icon layui-icon-login-wechat"></i>
  57.           </a>
  58.           <a href="javascript:;">
  59.             <i class="layui-icon layui-icon-login-weibo"></i>
  60.           </a>
  61.           <a href="reg.html" class="layadmin-user-jump-change layadmin-link">注册帐号</a>
  62.         </div>
  63.       </div>
  64.     </div>
  65.     <div class="layui-trans layadmin-user-login-footer">
  66.       <p>? 2018
  67.         <a href="http://www.layui.com/" target="_blank">layui.com</a>
  68.       </p>
  69.       <p>
  70.         <span>
  71.           <a href="http://www.layui.com/admin/#get" target="_blank">获取授权</a>
  72.         </span>
  73.         <span>
  74.           <a href="http://www.layui.com/admin/pro/" target="_blank">在线演示</a>
  75.         </span>
  76.         <span>
  77.           <a href="http://www.layui.com/admin/" target="_blank">前往官网</a>
  78.         </span>
  79.       </p>
  80.     </div>
  81.     <!--<div class="ladmin-user-login-theme">
  82.       <script type="text/html" template>
  83.         <ul>
  84.           <li data-theme=""><img src="{{ layui.setter.base }}style/res/bg-none.jpg"></li>
  85.           <li data-theme="#03152A" style="background-color: #03152A;"></li>
  86.           <li data-theme="#2E241B" style="background-color: #2E241B;"></li>
  87.           <li data-theme="#50314F" style="background-color: #50314F;"></li>
  88.           <li data-theme="#344058" style="background-color: #344058;"></li>
  89.           <li data-theme="#20222A" style="background-color: #20222A;"></li>
  90.         </ul>
  91.       </script>
  92.     </div>-->
  93.   </div>
  94.   <script src="__JS__/layui/layui.js"></script>
  95.   <script>
  96.     layui.config({
  97.       base: '__JS__/' //静态资源所在路径
  98.     }).extend({
  99.       index: 'lib/index' //主入口模块
  100.     }).use(['index', 'user'], function () {
  101.       var $ = layui.$
  102.         , setter = layui.setter
  103.         , admin = layui.admin
  104.         , form = layui.form
  105.         , router = layui.router()
  106.         , search = router.search;
  107.       form.render();
  108.       //提交
  109.       form.on('submit(LAY-user-login-submit)', function (obj) {
  110.         $('#lm-yz').click(); //刷新验证码
  111.         console.log(obj.field);
  112.         $.ajax({
  113.           type: "GET",
  114.           url: 'http://www.laomo.com/admin.php/admin/account/dologin',
  115.           dataType: "json",
  116.           data: obj.field,
  117.           type:'post',
  118.           success: function (e) {
  119.             console.log(e)
  120.           },
  121.           error: function (err) {
  122.             console.log(err)
  123.           }
  124.         });
  125.         return false;
  126.         
  127.       });
  128.     });
  129.   </script>
  130. </body>
  131. </html>
复制代码

再表述一下验证码的 实现,
安装完后,在 config/extra/captcha.php 中配置验证码信息; 【注意了 这个文件名是官方要求】
  1. <?php
  2. // <!-- 配置验证码 -->
  3. return [
  4.     // 验证字符集合
  5.     'codeSet'     =>    '56789',
  6.     // 验证码字体大小
  7.     'fontSize'    =>    36,   
  8.     // 验证码位数
  9.     'length'      =>    4,   
  10.     // 关闭验证码杂点
  11.     'useNoise'    =>    false,
  12. ];
复制代码




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表