后台登录
实现后台登录、继承初始化类未登录禁止登录、退出登录
1、提交表单时验证码captcha
2、MD5登录加密判断
3、公共类,后台控制器除了登录类外都继承该初始化类,实现未登录状态下拒绝访问其他控制器
登录功能
控制器
public function index()
{
if(request()->isPost()){
$data = input('post.');
//第一步:提交表单时验证码captcha
if($this->check($data['yzm'])){
$MangerModel = new MangerModel;
//第二步:MD5登录加密判断
$num = $MangerModel->login($data);
if($num==1){
$this->success('登录成功', url('Index/index'));
}
if($num==2){
$this->error('密码不对');
}
if($num==3){
$this->error('用户不存在');
}
}else{
$this->error('验证码不对');
}
}else{
return view();
}
}
//验证码
public function check($code="")
{
$captcha = new Captcha();
if(!$captcha->check($code)){
$this->error('验证码不对');
}else{
return true;
}
}
模型类验证用户名与密码
// 登录
public function login($data){
$admin=Manger::getByusername($data['username']);
if($admin){
$id=$admin['id'];
$user=$admin['username'];
$pass=$admin['password'];
if($pass==md5($data['password'])){
// 密码正确
session('name',$user);
session('id',$id);
return 1;
}else{
// 密码不正确
return 2;
}
}else{
// 用户名不存在
return 3;
}
}
前端模板
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="__STATIC__/public/bs/css/bootstrap.min.css">
<script src="__STATIC__/public/bs/js/jquery.min.js"></script>
<script src="__STATIC__/public/bs/js/bootstrap.min.js"></script>
<style>
.col-md-12{
height:150px;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12"></div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="col-md-4">
<form class="form-horizontal" action="" method="POST" >
<div class="form-group">
<label for="inputEmail3" class="control-label">用户名称</label>
<input type="text" name="username" class="form-control" id="" placeholder="username">
</div>
<div class="form-group">
<label for="inputPassword3" class="control-label">用户密码</label>
<input type="text" name="password" class="form-control" id="" placeholder="Password">
</div>
<div class="form-group">
<div><img src="{:captcha_src()}" alt="captcha" /></div>
<input type="text" class="form-control" id="inputPassword3" placeholder="验证码" name="yzm">
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">登录</button>
<button type="reset" class="btn btn-default">重置</button>
</div>
</div>
</form>
</div>
<div class="col-md-4"></div>
</div>
<div class="row">
<div class="col-md-12"></div>
</div>
</div>
</body>
</html>
效果图
未登录禁止访问的前置操作
控制器名Allow.php
_initialize()采用tp内置初始化函数,所有后台类除了login登录类外都继承该类
use think\Controller;
use think\Request;
class Allow extends Controller{
public function _initialize(){
if(!session('name') || !session('id')){
$this->error('请登录',url('Login/index'));
}
}
}
退出登录功能
// 退出
public function logout()
{
session(null);
$this->success('退出成功',url('index'));
}