一、数据库表
三个表,分别是管理员、部门、左侧菜单
二、搭建tp6layui项目
www目录下cmd:
composer create-project topthink/think tp6layui
复制这两个到public/static
多应用模式
tp6layui目录下cmd
composer require topthink/think-multi-app
三、登录页面的实现
app目录下controller删掉,新建一个写后端的目录bews,bews目录下新建controller,view
这里改一下,html改成php
view下新建Login目录,复制已写好的login.html到Login目录,后改成index.php
安装模板驱动,项目目录下cmd: composer require topthink/think-view
弄好了,就可以创建controller下的Login.php
<?php /** * 后台管理系统-登录 */ namespace app\bews\controller; use think\App; use think\facade\View; class Login{ public function index(){ // return View::fetch('index');可省略写成return View::fetch(); // return View::fetch('index'); return View::fetch(); } }
注意:bews目录下:controller目录下的Login.php的index方法,与view目录下的Login目录的index.php是对应,所以可以这样写:return View::fetch();
浏览器访问,注意访问路径:
引入静态资源的问题:写成这个形式
四、验证码的显示
项目目录下cmd:
composer require topthink/think-captcha
此处可设置验证字符集,位数,混淆曲线,杂点等等
<div style="margin-left:10px;"> <img id="img" src="{:captcha_src()}" alt="captcha" class="layadmin-user-login-codeimg" οnclick="reloadImg()"/> </div>
// 点击刷新,重新生成验证码 function reloadImg(){ $('#img').attr('src','{:captcha_src()}?rand='+Math.random()); }
五、登录功能
配置数据库,引入Db
配置数据库,改成自己的信息
// 数据库名 'database' => env('database.database', ''), // 用户名 'username' => env('database.username', 'root'), // 密码 'password' => env('database.password', ''),
.env的配置改成自己的:
# DATABASE = test # USERNAME = username # PASSWORD = password
引入Db
use think\facade\Db;
数据库增删改查的代码就能写了。
// 查询数据库,判断用户名、密码、验证码是否正确 $user = Db::table('admin_user')->where('account',$account)->find(); if(empty($user)){ echo json_encode(['code'=>1,'msg'=>'未找到用户']); exit; } if($user['password'] != md5($password)){ echo json_encode(['code'=>1,'msg'=>'密码不正确']); exit; } if(!captcha_check($code)){ echo json_encode(['code'=>1,'msg'=>'请输入正确的验证码']); exit; }
备注:tp6layui.sql放在www目录下了。
使用验证码,需要把app目录下的middleware.php的这一行,取消注释。
缓存中存放用户信息
引入Cookie
use think\facade\Cookie;
// 缓存中存放用户信息u Cookie::set('admin_id',$user['uid']); Cookie::set('admin_name',$user['name']); // 数据库更新一下登录次数和登录时间 Db::table('admin_user')->where('uid',$user['uid'])->update( ['times_login' => $user['times_login']+1,'time_last' => time()] );