前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TP6实现登录后台管理(一)

TP6实现登录后台管理(一)

作者头像
以星河为聘礼
修改2021-09-22 11:06:05
1.2K0
修改2021-09-22 11:06:05
举报
文章被收录于专栏:编码遇到的坑

 1.参考上图我们首先需要的就是先走通逻辑;

2.我们需要在数据库中简历字段,链接数据库,在进行下一步操作

3.首先在控制器下新建admin模块

我的是多应用模式,如果不是多应用模式直接在controller下新建即可

Login.php下的代码

代码语言:javascript
复制
namspace app\admin\controller;
 
class Login exetends BaseController
{
 
public function index()
 
{
//安装视图才可以,
//这个是跳转到view下的index.html
//安装视图后创建view目录放入对应的html文件
return View::fetch()  
}
 
//登陆时检测密码是否正确
public function  check(){
 
//判断请求方式是不是POst
if($this->request()->is_Post()){
 
}
 
//show方法在app\common下自行定义才可以使用
//config代表config目录下
//status代表status文件自行创建定义状态码
return show(config("status.error"),"请求方式不对")
 
 
}
 
//判断提交的表单与数据库是否比对
$usernam = $this->request->param("username","","trim");
$password= $this->request->param("password","","trim");
//验证码自行去官网安装
//安装后需要在app\middleware中开启session才可以使用
$captcha= $this->request->param("captcha","","trim");
 
//判断username password captcha 是否为空
if(empty($username) || empty($password) || empty($captcha)){
 return show(config("status.error"),"参数不能为空");
 
}
 
//创建通用验证码9997
if($captcha == 9997){
    return show(config("status.success"),"登录成功");
}
 
//校验验证码是否等于session中的验证码
if(!captcha_check($captcha))
{
 
show(config("status.error"),"验证码校验失败");
}
  //获取user表数据
        $adminUserObj = new AdminUser();
        $adminUser = $adminUserObj -> getAdminUserByUsername($username);
 
        //判断用户表数据是否为空,以及数据库表的状态
        if(empty($adminUser) || $adminUser->status != config("status.mysql.table_normal")){
            return show(config("status.error"),"该用户不存在");
        }
 
        $adminUser = $adminUser -> toArray();
 
        //判断密码是否正确
        if ($adminUser['password'] != md5($password."_xiaobai_abc"))
        {
            return show(config("status.error"),"密码错误");
 
        }
 
 
        $updateData = [
          "last_login_time"    =>      time(),
          "last_login_ip"       =>      request()->ip(),
          "update_time"         =>      time(),
 
        ];
 
        $res = $adminUserObj->updateById($adminUser['id'],$updateData);
        if (empty($res)){
            return show(config("status.error"),"登录失败");
        }
 
        }catch (\Exception $e){
            //todo 记录日志 $e->getMessage();
            return show(config("status.success"),"内部异常登录失败");
        }
        //记录到session
        session(config("admin.session_admin"),$adminUser);
 
        return  show(config("status.success"),"登录成功");
}
 
   
    }

4.模型下的数据AdminUser

模型应该在common文件下

代码语言:javascript
复制
<?php
namspace app/common/model/mysql;
use think/model
class AdminUser exetends Model
{
    
//判断用户是否存在
public function getAdminUserByusernam($usernam){
    if(empty($username)){
 
    return false;
}
$result = [
"username"    => trim($username),
 
];
 
return $this->where($result)->find()
 
 
}
 
//根据模型更新数据库中登录操作
publice function updateById($id,$data)
{
//将id转换
$id = intval($id),
//判断id,data以及data是不是数组
if(empty($id) || empty($data) || !is_Post($data))
{
return false;
}
$where = [
"id"    => $id,
];
 
$this->where($id)->save($data);
}
 
 
}

5.验证码写了个通用验证码,但是我们还是要去调用tp自带验证码判断,安装验证码命令

代码语言:javascript
复制
composer require topthink/think-captcha

 详情可参考《tp6官方文档

有问题参考”tp6框架验证码-----captcha

在controller下创建Verify控制器

代码语言:javascript
复制
class Verify {
    public  function  index()
    {
    return Captcha::create("verify");  //verify 是引入的自定义验证码,参数名自行配置
    }
}

6.index控制器下视图如果没有安装则会有问题

代码语言:javascript
复制
<?php
namespace app\admin\controller;
 
use app\BaseController;
use think\facade\View;
 
class Index extends BaseController
{
   public function index(){
       return View::fetch();
   }
 
}

登录第一部分结束敬请期待下一张

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档