后台
<?php
namespace app\admin\controller;
use app\admin\model\AdminModel;
use think\Controller;
use think\captcha\Captcha;
class Login extends Controller
{
/**
* 登录页面
*/
public function index()
{
return $this->fetch();
}
public function checkLogin(){
$username = trim(input("post.username"));
$password = trim(input("post.password"));
$verify = trim(input("post.verify"));
if(empty($username)){
sendmsg(false,"用户名不能为空");
}elseif(empty($password)){
sendmsg(false,"密码不能为空");
}elseif(empty($verify)){
sendmsg(false,"验证码不能为空");
}
if(!$this->check_verify($verify)){
sendmsg(false,"验证码错误");
}
$adminModel = new AdminModel();
$res = $adminModel->checkAdminLogin($username,$password);
if($res['ok']){
sendmsg(true,"登录成功");
}else{
sendmsg(false,$res['msg']);
}
}
//验证码
public function Verify(){
$captcha = new Captcha();
$captcha->length = 4;
$captcha->codeSet = "02345689";
return $captcha->entry();
}
/**
* 检测验证码是否正确
* @param $code 验证码
* @param string $id 区分验证码 主键
* @return bool true|false
*/
public function check_verify($code,$id=''){
$captcha = new Captcha();
return $captcha->check($code,$id);
}
public function loginOut(){
session(null);
$this->redirect("Login/index");
}
}
前台
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<title>猪上树商城管理后台</title>
<link rel="stylesheet" href="/static/admin/login/css/style.css">
</head>
<body>
<div class="login">
<h1>猪上树商城管理后台</h1>
<form method="post">
<input type="text" id="username" name="username" placeholder="请输入账号" required="required" />
<input type="password" id="password" name="password" placeholder="请输入密码" required="required" />
<input type="text" id="verify" name="verify" placeholder="请输入验证码" required="required" style="width:150px;float:left;" />
<img "this.src='{:url('Login/Verify')}'" src="{:url('Login/Verify')}" height="35" title="点击切换验证码" style="float:right;">
</form>
<button type="submit" id="login" class="btn btn-primary btn-block btn-large">登录</button>
</div>
<script src="/static/jquery-3.3.1.min.js"></script>
<script src="/static/layui/layui.all.js"></script>
<script>
$(document).keyup(function(event){
if(event.keyCode ==13){
$("#login").trigger("click");
}
});
$("#login").click(function(){
var username = $("#username").val();
var password = $("#password").val();
var verify = $("#verify").val();
$.ajax({
url:"{:url('Login/checkLogin')}",
type:"post",
dataType:"json",
data:{"username":username,"password":password,"verify":verify},
}).done(function(res) {
if(res.ok){
setTimeout("window.location='{:url('Index/index')}'",650);
}else{
layer.msg(res.msg,{icon:2});
}
}).fail(function() {
layer.msg("发送请求失败",{icon:2});
});
});
</script>
</body>
</html>
模板
<?php
namespace app\admin\model;
use think\Model;
class AdminModel extends Model
{
/**
* checkAdminLogin 检查登录
* @param $username 用户账号
* @param $password 用户密码
* @return mixed array [ok] bool [msg] string
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function checkAdminLogin($username,$password){
$adminInfo = db("admin")->where("username",$username)->find();
if(empty($adminInfo)){ //此用户不存在
$ret['ok'] = false;
$ret['msg'] = "此用户不存在";
return $ret;
}else{ //此用户存在
if($adminInfo['status']==1){ //当前用户状态是正常的
if(md5($password)==$adminInfo['password']){ //判断密码
//获取管理员的权限
$role_info = db("role_admin")->alias("ra")
->join("access a","ra.role_id=a.role_id","LEFT")
->where("ra.user_id",$adminInfo['id'])->find();
session("ADMIN_NODE",explode(",",$role_info['node_id']));
session("ADMIN_SESSION",$adminInfo);
$ret['ok'] = true;
$ret['msg'] = "登录成功";
return $ret;
}else{
$ret['ok'] = false;
$ret['msg'] = "账号密码错误";
return $ret;
}
}else{ //当前用户锁定禁用
$ret['ok'] = false;
$ret['msg'] = "此账户已被锁定";
return $ret;
}
}
}
/**
* 添加管理员
* @param $data
*/
public function addAdmin($data){
$adminData = $data;
$adminData['password'] = md5($data['password']);
unset($adminData['file']);
unset($adminData['role_id']);
if(db("admin")->insert($adminData)){
$raData['user_id'] = db("admin")->getLastInsID();
$raData['role_id'] = $data['role_id'];
if(db("role_admin")->insert($raData)){
return true;
}else{
return false;
}
}else{
return false;
}
}
public function getAdminList($keywords){
if(empty($keywords)){
$data = db("admin")->alias("a")
->field("a.*,ra.role_id,r.name as rolename")
->join("role_admin ra","a.id=ra.user_id","LEFT")
->join("role r","ra.role_id=r.id","LEFT")
->paginate(10);
}else{
$data = db("admin")->alias("a")
->field("a.*,ra.role_id,r.name as rolename")
->join("role_admin ra","a.id=ra.user_id","LEFT")
->join("role r","ra.role_id=r.id","LEFT")
->where("a.username|a.phone|a.email|r.name","LIKE","%$keywords%")
->paginate(10);
}
return $data;
}
public function editAdmin($data){
$adminData = $data;
$editAdminStatus = false;
$editRoleAdminStatus = false;
unset($adminData['role_id']);
unset($adminData['file']);
if(!empty($adminData['password'])){
$adminData['password'] = md5($data['password']);
}
if(db("admin")->where("id",$data['id'])->update($adminData)){
$editAdminStatus = true;
}
if(db("role_admin")->where("user_id",$data['id'])->setField("role_id",$data['role_id'])){
$editRoleAdminStatus = true;
}
if($editAdminStatus || $editRoleAdminStatus){
return true;
}else{
return false;
}
}
public function delAdmin(){
}
public function editAdminStatus($id){
}
public function getAdminById($id){
$data = db("admin")
->alias("a")->field("a.*,ra.role_id")
->join("role_admin ra","a.id=ra.user_id","LEFT")
->where("a.id",$id)->find();
return $data;
}
}