摘要:总结:本章课程主要学习到了登录页面的操作,从登录页面的制作,管理员表的设计,数据库方位类的封装,登录功能的实现,以及防止非法用户访问多个功能,收货最大的是关于登录数据的验证,前端的验证以及后台的验证,在操作的过程中因报错不明显,找错误占用的很多的时间,对于数据的验证收获还是很大的。/********************* Account.php 登录控制器*******
总结:本章课程主要学习到了登录页面的操作,从登录页面的制作,管理员表的设计,数据库方位类的封装,登录功能的实现,以及防止非法用户访问多个功能,收货最大的是关于登录数据的验证,前端的验证以及后台的验证,在操作的过程中因报错不明显,找错误占用的很多的时间,对于数据的验证收获还是很大的。
/********************* Account.php 登录控制器***************************/
<?php
namespace app\admins\controller;
use think\Controller;
use Util\SysDb;
class Account extends Controller
{
public function login(){
//echo md5('admin123456');
//$this->db = new SysDb;
//$this->db->table('admin')->where(array('id'=>1))->lists();
return $this->fetch();
}
public function dologin()
{
$username = trim(input('post.username'));
$password = input('post.password');
$verifycode = input('post.verifycode');
if($username == ''){
exit(json_encode(array('code'=>1,'msg'=>'用户名不能为空')));
}
if($password == ''){
exit(json_encode(array('code'=>1,'msg'=>'密码不能为空')));
}
if($verifycode == ''){
exit(json_encode(array('code'=>1,'msg'=>'验证码不能为空')));
}
if(!captcha_check($verifycode)){
exit(json_encode(array('code'=>1,'msg'=>'验证码不正确')));
}
//验证用户
$this->db = new SysDb;
$admin = $this->db->table('admins')->where(array('username'=>$username))->item();
if(!$admin){
exit(json_encode(array('code'=>1,'msg'=>'用户不存在')));
}
if(md5($admin['username'].$password) != $admin['password']){
exit(json_encode(array('code'=>1,'msg'=>'密码错误')));
}
if($admin['status']==1){
exit(json_encode(array('code'=>1,'msg'=>'用户已被禁用')));
}
//设置用户session
session('admin',$admin);
exit(json_encode(array('code'=>0,'msg'=>'登录成功')));
}
}
/********************* login.php 登录页面 **********************/
<html>
<head>
<title>后台模板</title>
<link rel="stylesheet" type="text/css" href="/static/plugins/layui/css/layui.css">
<script type="text/javascript" src="/static/plugins/layui/layui.js"></script>
<style type="text/css">
body{background:#0094ff;}
</style>
</head>
<body>
<div style="position:absolute;left:50%;top:50%;width:500px;margin-left:-250px;margin-top:-200px;">
<div style="background:#ffffff;padding:20px;border-radius:4px;box-shadow:5px 5px 20px #444444;">
<div class="layui-form">
<div class="layui-form-item" style="color:gray;">
<h2>后台管理系统</h2>
</div>
<hr>
<div class="layui-form-item">
<label class="layui-form-label">用户名</label>
<div class="layui-input-block">
<input type="text" class="layui-input" id="username">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密 码</label>
<div class="layui-input-block">
<input type="password" class="layui-input" id="password">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">验证码</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" id="verifycode">
</div>
<img src="{:captcha_src()}" id="img" onclick="reloadImg()">
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" onclick="dologin()">登录</button>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
<script type="text/javascript">
layui.use('layer',function(){
layer = layui.layer;
$ = layui.jquery;
// 获取焦点
$('#username').focus();
// 直接回车登录
$('input').keydown(function(e){
if(e.keyCode == 13){
dologin();
}
});
});
// 重新加载验证码
function reloadImg(){
$('#img').attr('src','{:captcha_src()}?rand='+Math.random());
}
function dologin(){
var username = $.trim($('#username').val());
var password = $('#password').val();
var verifycode = $('#verifycode').val();
if(username==''){
layer.alert('请输入用户名',{'icon':2});
return;
}
if(password == ''){
layer.alert('密码不能为空',{'icon':2});
return;
}
if(verifycode==''){
layer.alert('验证码不能为空',{'icon':2});
return;
}
$.post('/index.php/admins/account/dologin',{'username':username,'password':password,'verifycode':verifycode},function(res){
if(res.code>0){
reloadImg();
layer.alert(res.msg,{'icon':2});
}else{
layer.msg(res.msg);
setTimeout(function(){window.location.href='/index.php/admins/home/index'},1000);
}
},'json');
}
</script>
/************************** Base.php 权限控制器 ***************************/
<?php
namespace app\admins\controller;
use think\Controller;
use Util\SysDb;
class Base extends Controller{
public function __construct()
{
parent::__construct();
$this->_admin = session('admin');
if(!$this->_admin){
header('Location:/index.php/admins/account/login');
exit;
}
}
}
/************************* Home.php 首页控制器 *****************************/
<?php
namespace app\admins\controller;
use think\Controller;
use Util\SysDb;
class Home extends Base{
public function index(){
return $this->fetch();
}
}