1、登录、退出
后台
<?phpnamespace app\admin\controller;use think\Controller;class Login extends Controller{public function login(){//一个方法 处理两个业务逻辑:页面展示 表单提交if(request()->isPost()){//post请求 表单提交//接收参数 username password code$params = input();//参数检测 (表单验证)$rule = ['username|用户名' => 'require','password|密码' => 'require','code|验证码' => 'require'//'code|验证码' => 'require|captcha'];$res = $this->validate($params, $rule);if($res !== true){$this->error($res);}//验证码手动校验if(!captcha_check($params['code'])){$this->error('验证码错误');}//查询管理员用户表$password = encrypt_password($params['password']);$manager = \app\admin\model\Manager::where('username', $params['username'])->where('password', $password)->find();if($manager){//登录成功//设置登录标识到sessionsession('manager_info', $manager->toArray());//页面跳转$this->success('登录成功', 'admin/index/index');}else{//用户名或密码错误$this->error('用户名或密码错误');}}else{//get请求 页面展示//临时关闭全局模板布局$this->view->engine->layout(false);return view();}}//退出public function logout(){//清空sessionsession(null);$this->redirect('admin/login/login');}}
前台
<!DOCTYPE html><html><head><meta charset="utf-8"><title>登录</title><link href="/static/admin/css/login.css" rel="stylesheet" type="text/css"/><style type="text/css">.login-bg{background: url(/static/admin/img/login-bg-3.jpg) no-repeat center center fixed;background-size: 100% 100%;}</style><script src='/static/admin/js/jquery-3.1.1.min.js'></script></head><body class="login-bg"><div class="login-box"><header><h1>后台管理系统</h1></header><div class="login-main"><form action="{$Request.url}" class="form" method="post"><div class="form-item"><label class="login-icon"><i></i></label><input type="text" id='username' name="username" placeholder="这里输入登录名" required></div><div class="form-item"><label class="login-icon"><i></i></label><input type="password" id="password" name="password" placeholder="这里输入密码"></div><div class="form-item verify"><label class="login-icon"><i></i></label><input type="text" id='verify' class="pull-left" name="code" placeholder="这里输入验证码"><img class="pull-right" src="{:captcha_src()}" onclick="this.src='{:captcha_src()}?'+ Math.random()"><div class="clear"></div></div><div class="form-item"><button type="button" class="login-btn">登  录</button></div></form><div class="msg"></div></div></div><script type="text/javascript">$(function(){$('.login-btn').on('click',function(evt){if($('#username').val() == ''){$('.msg').html('登录名不能为空');return;}if($('#password').val() == ''){$('.msg').html('密码不能为空');return;}if($('#verify').val() == ''){$('.msg').html('验证码不能为空');return;}$('form').submit();});});</script></body></html>
2、后台页面权限控制(校验是否登录)
主要是通过父类继承 ,父类的构造函数 construct 实现的。每次进controller都会进父类的construct里面。
<?phpnamespace app\admin\controller;use think\Controller;use think\Request;class Base extends Controller{public function __construct(Request $request){//实现父类的构造函数parent::__construct($request);//登录检测if(!session('?manager_info')){//没登录$this->redirect('admin/login/login');}}}
3、增加验证码
建议在配置文件里面增加配置文件,因为默认的非常的不友好。
//验证码配置'captcha' => [// 验证码位数'length' => 4,// 是否画混淆曲线'useCurve' => false,]
前台如何显示和后台如何校验,请看上面的登录
