日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

thinkphp5框架一小时搭建一个php后端(1)

發(fā)布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 thinkphp5框架一小时搭建一个php后端(1) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

開發(fā)環(huán)境使用phpstudy

編輯器用sublime

數(shù)據(jù)庫navicat

需要下載composer

先配置好本地域名,然后需要我們將資源引入到項目里面

下載地址www.layui.com.

layui框架有很多我們后臺開發(fā)需要的控件,幫助我們高效完成后臺搭建。

先創(chuàng)建我們的入口文件admins.php,接著我們在application里面建立一個admins的目錄。

接著我們需要創(chuàng)建登錄需要用到的控制器。

Account.php

<?php
namespace app\admins\controller;
use think\Controller;
use Util\data\Sysdb;
/**
* 
*/
class Account extends Controller
{public function login(){return $this->fetch();}// 管理員登錄public function dologin(){$username = trim(input('post.username'));$pwd = trim(input('post.pwd'));$verifycode = trim(input('post.verifycode'));if($username == ''){exit(json_encode(array('code'=>1,'msg'=>'用戶名不能為空')));}if($pwd == ''){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'].$pwd) != $admin['password']){exit(json_encode(array('code'=>1,'msg'=>'密碼錯誤')));}if($admin['status'] == 1){exit(json_encode(array('code'=>1,'msg'=>'用戶已被禁用')));}// 設(shè)置用戶sessionsession('admin',$admin);exit(json_encode(array('code'=>0,'msg'=>'登錄成功')));}public function logout(){session('admin',null);exit(json_encode(array('code'=>0,'msg'=>'退出成功')));}
}

下面我們寫登錄頁面

?先建一個view文件夾,里面建一個account。放login.html

<!DOCTYPE html>
<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>
</head>
<body style="background: #1E9FFF"><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>后臺管理系統(tǒng)</h2></div><hr><div class="layui-form-item"><label class="layui-form-label">用戶名</label><div class="layui-input-block"><input type="text" id="username" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">密&nbsp;&nbsp;&nbsp;&nbsp;碼</label><div class="layui-input-block"><input type="password" id="password" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">驗證碼</label><div class="layui-input-inline"><input type="text" id="verifycode" class="layui-input"></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><script type="text/javascript">layui.use(['layer'],function(){$ = layui.jquery;layer = layui.layer;// 用戶名控件獲取焦點$('#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 pwd = $.trim($('#password').val());var verifycode = $.trim($('#verifycode').val());if(username == ''){layer.alert('請輸入用戶名',{icon:2});return;}if(pwd == ''){layer.alert('請輸入密碼',{icon:2});return;}if(verifycode==''){layer.alert('請輸入驗證碼',{icon:2});return;}$.post('/admins.php/admins/Account/dologin',{'username':username,'pwd':pwd,'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 = '/admins.php/admins/Home/index'},1000);}},'json');}</script>
</body>
</html>

?按照自己的喜好設(shè)計,框架網(wǎng)里面有樣式。

接著需要我們創(chuàng)建管理員數(shù)據(jù)庫

接著封裝數(shù)據(jù)庫訪問類

建好如圖所示的文件夾,編輯Sysdb.php

<?php
namespace Util\data;
use think\Db;class Sysdb{// 指定表名public function table($table){$this->where = array();$this->field = '*';$this->order = '';$this->table = $table;return $this;}// 指定查詢字段public function field($field = '*'){$this->field = $field;return $this;}// 排序public function order($order){$this->order = $order;return $this;}// 指定查詢條件public function where($where = array()){$this->where = $where;return $this;}// 返回一條記錄public function item(){$item = Db::name($this->table)->field($this->field)->where($this->where)->find();return $item ? $item : false;}// 返回listpublic function lists(){$query = Db::name($this->table)->field($this->field)->where($this->where);$this->order && $query = $query->order($this->order);$lists = $query->select();return $lists ? $lists : false;}// 自定義索引列表public function cates($index){$query = Db::name($this->table)->field($this->field)->where($this->where);$this->order && $query = $query->order($this->order);$lists = $query->select();if(!$lists){return false;}$results = [];foreach ($lists as $key => $value) {$results[$value[$index]] = $value;}return $results;}// 分頁public function pages($pageSize = 10){$total = Db::name($this->table)->where($this->where)->count();$query = Db::name($this->table)->field($this->field)->where($this->where);$this->order && $query = $query->order($this->order);$data = $query->paginate($pageSize,$total);return array('total'=>$total,'lists'=>$data->items(),'pages'=>$data->render());}// 添加public function insert($data){$res = Db::name($this->table)->insert($data);return $res;}// 修改public function update($data){$res = Db::name($this->table)->where($this->where)->update($data);return $res;}// 刪除public function delete(){$res = Db::name($this->table)->where($this->where)->delete();return $res;}}

最后需要我們需要進(jìn)行登錄驗證,這里我們需要使用composer。

在config.php里面添加配置

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------return [// +----------------------------------------------------------------------// | 應(yīng)用設(shè)置// +----------------------------------------------------------------------// 應(yīng)用調(diào)試模式'app_debug'              => true,// 應(yīng)用Trace'app_trace'              => false,// 應(yīng)用模式狀態(tài)'app_status'             => '',// 是否支持多模塊'app_multi_module'       => true,// 入口自動綁定模塊'auto_bind_module'       => false,// 注冊的根命名空間'root_namespace'         => [],// 擴(kuò)展函數(shù)文件'extra_file_list'        => [THINK_PATH . 'helper' . EXT],// 默認(rèn)輸出類型'default_return_type'    => 'html',// 默認(rèn)AJAX 數(shù)據(jù)返回格式,可選json xml ...'default_ajax_return'    => 'json',// 默認(rèn)JSONP格式返回的處理方法'default_jsonp_handler'  => 'jsonpReturn',// 默認(rèn)JSONP處理方法'var_jsonp_handler'      => 'callback',// 默認(rèn)時區(qū)'default_timezone'       => 'PRC',// 是否開啟多語言'lang_switch_on'         => false,// 默認(rèn)全局過濾方法 用逗號分隔多個'default_filter'         => '',// 默認(rèn)語言'default_lang'           => 'zh-cn',// 應(yīng)用類庫后綴'class_suffix'           => false,// 控制器類后綴'controller_suffix'      => false,// +----------------------------------------------------------------------// | 模塊設(shè)置// +----------------------------------------------------------------------// 默認(rèn)模塊名'default_module'         => 'index',// 禁止訪問模塊'deny_module_list'       => ['common'],// 默認(rèn)控制器名'default_controller'     => 'Index',// 默認(rèn)操作名'default_action'         => 'index',// 默認(rèn)驗證器'default_validate'       => '',// 默認(rèn)的空控制器名'empty_controller'       => 'Error',// 操作方法后綴'action_suffix'          => '',// 自動搜索控制器'controller_auto_search' => false,// +----------------------------------------------------------------------// | URL設(shè)置// +----------------------------------------------------------------------// PATHINFO變量名 用于兼容模式'var_pathinfo'           => 's',// 兼容PATH_INFO獲取'pathinfo_fetch'         => ['ORIG_PATH_INFO', 'REDIRECT_PATH_INFO', 'REDIRECT_URL'],// pathinfo分隔符'pathinfo_depr'          => '/',// URL偽靜態(tài)后綴'url_html_suffix'        => 'html',// URL普通方式參數(shù) 用于自動生成'url_common_param'       => false,// URL參數(shù)方式 0 按名稱成對解析 1 按順序解析'url_param_type'         => 0,// 是否開啟路由'url_route_on'           => true,// 路由使用完整匹配'route_complete_match'   => false,// 路由配置文件(支持配置多個)'route_config_file'      => ['route'],// 是否強(qiáng)制使用路由'url_route_must'         => false,// 域名部署'url_domain_deploy'      => false,// 域名根,如thinkphp.cn'url_domain_root'        => '',// 是否自動轉(zhuǎn)換URL中的控制器和操作名'url_convert'            => true,// 默認(rèn)的訪問控制器層'url_controller_layer'   => 'controller',// 表單請求類型偽裝變量'var_method'             => '_method',// 表單ajax偽裝變量'var_ajax'               => '_ajax',// 表單pjax偽裝變量'var_pjax'               => '_pjax',// 是否開啟請求緩存 true自動緩存 支持設(shè)置請求緩存規(guī)則'request_cache'          => false,// 請求緩存有效期'request_cache_expire'   => null,// 全局請求緩存排除規(guī)則'request_cache_except'   => [],// +----------------------------------------------------------------------// | 模板設(shè)置// +----------------------------------------------------------------------'template'               => [// 模板引擎類型 支持 php think 支持?jǐn)U展'type'         => 'Think',// 模板路徑'view_path'    => '',// 模板后綴'view_suffix'  => 'html',// 模板文件名分隔符'view_depr'    => DS,// 模板引擎普通標(biāo)簽開始標(biāo)記'tpl_begin'    => '{',// 模板引擎普通標(biāo)簽結(jié)束標(biāo)記'tpl_end'      => '}',// 標(biāo)簽庫標(biāo)簽開始標(biāo)記'taglib_begin' => '{',// 標(biāo)簽庫標(biāo)簽結(jié)束標(biāo)記'taglib_end'   => '}',],// 視圖輸出字符串內(nèi)容替換'view_replace_str'       => [],// 默認(rèn)跳轉(zhuǎn)頁面對應(yīng)的模板文件'dispatch_success_tmpl'  => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl','dispatch_error_tmpl'    => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',// +----------------------------------------------------------------------// | 異常及錯誤設(shè)置// +----------------------------------------------------------------------// 異常頁面的模板文件'exception_tmpl'         => THINK_PATH . 'tpl' . DS . 'think_exception.tpl',// 錯誤顯示信息,非調(diào)試模式有效'error_message'          => '頁面錯誤!請稍后再試~',// 顯示錯誤信息'show_error_msg'         => false,// 異常處理handle類 留空使用 \think\exception\Handle'exception_handle'       => '',// +----------------------------------------------------------------------// | 日志設(shè)置// +----------------------------------------------------------------------'log'                    => [// 日志記錄方式,內(nèi)置 file socket 支持?jǐn)U展'type'  => 'File',// 日志保存目錄'path'  => LOG_PATH,// 日志記錄級別'level' => [],],// +----------------------------------------------------------------------// | Trace設(shè)置 開啟 app_trace 后 有效// +----------------------------------------------------------------------'trace'                  => [// 內(nèi)置Html Console 支持?jǐn)U展'type' => 'Html',],// +----------------------------------------------------------------------// | 緩存設(shè)置// +----------------------------------------------------------------------'cache'                  => [// 驅(qū)動方式'type'   => 'File',// 緩存保存目錄'path'   => CACHE_PATH,// 緩存前綴'prefix' => '',// 緩存有效期 0表示永久緩存'expire' => 0,],// +----------------------------------------------------------------------// | 會話設(shè)置// +----------------------------------------------------------------------'session'                => ['id'             => '',// SESSION_ID的提交變量,解決flash上傳跨域'var_session_id' => '',// SESSION 前綴'prefix'         => 'think',// 驅(qū)動方式 支持redis memcache memcached'type'           => '',// 是否自動開啟 SESSION'auto_start'     => true,],// +----------------------------------------------------------------------// | Cookie設(shè)置// +----------------------------------------------------------------------'cookie'                 => [// cookie 名稱前綴'prefix'    => '',// cookie 保存時間'expire'    => 0,// cookie 保存路徑'path'      => '/',// cookie 有效域名'domain'    => '',//  cookie 啟用安全傳輸'secure'    => false,// httponly設(shè)置'httponly'  => '',// 是否使用 setcookie'setcookie' => true,],//分頁配置'paginate'               => ['type'      => 'bootstrap','var_page'  => 'page','list_rows' => 15,],// 驗證碼配置'captcha' => [// 驗證碼的字符集'codeSet' => '23456789abcdefhijkmnpqrstuvwxyzABCDEFHJKMNPQRSTUVWXYZ',// 設(shè)置驗證碼字體大小'fontSize' => 18,// 添加混淆曲線'useCurve' => false,// 設(shè)置圖片的高度、寬度'imageW' => 150,'imageH' => 35,// 驗證碼位數(shù)'length' =>4,// 驗證成功后重置'reset' =>true],
];

接著為了防止非法用戶訪問

controller里面新建home.php ,BaseAdmin.php

home.php

<?php
namespace app\admins\controller;
use think\Controller;
use Util\data\Sysdb;/**
* 后臺首頁
*/
class Home extends BaseAdmin
{public function index(){$menus = false;$role = $this->db->table('admin_groups')->where(array('gid'=>$this->_admin['gid']))->item();if($role){$role['rights'] = (isset($role['rights']) && $role['rights']) ? json_decode($role['rights'],true) : [];}if($role['rights']){$where = 'mid in('.implode(',',$role['rights']).') and ishidden=0 and status=0';$menus = $this->db->table('admin_menus')->where($where)->cates('mid');$menus && $menus = $this->gettreeitems($menus);}$site = $this->db->table('sites')->where(array('names'=>'site'))->item();$site && $site['values'] = json_decode($site['values']);$this->assign('site',$site);$this->assign('role',$role);$this->assign('menus',$menus);return $this->fetch();}private function gettreeitems($items){$tree = array();foreach ($items as $item) {if(isset($items[$item['pid']])){$items[$item['pid']]['children'][] = &$items[$item['mid']];}else{$tree[] = &$items[$item['mid']];}}return $tree;}// 歡迎頁面public function welcome(){return $this->fetch();}
}

BaseAdmin.php?

<?php
namespace app\admins\controller;
use think\Controller;
use Util\data\Sysdb;/**
* 
*/
class BaseAdmin extends Controller
{public function __construct(){parent::__construct();$this->_admin = session('admin');// 未登錄的用戶不允許訪問if(!$this->_admin){header('Location: /admins.php/admins/Account/login');exit;}$this->assign('admin',$this->_admin);// 判斷用戶是否有權(quán)限$this->db = new Sysdb;}	
}

登錄部分完結(jié)

下面是對后臺界面進(jìn)行編寫

寫兩個

index.html

<!DOCTYPE html>
<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">.header{width:100%;height: 50px;line-height: 50px;background: #2e6da4;color:#ffffff;}.title{margin-left: 20px;font-size: 20px;}.userinfo{float: right;margin-right: 10px;}.userinfo a{color:#ffffff;}.menu{width: 200px;background: #333744;position: absolute;}.main{position: absolute;left: 200px;right: 0px;}.layui-collapse{border: none;}.layui-colla-item{border-top: none;}.layui-colla-title{background: #42485b;color:#ffffff;}.layui-colla-content{border-top: none;padding: 0px;}</style>
</head>
<body><!--header--><div class="header"><span class="title"><span style="font-size: 12px;">{$site.values}</span>-后臺管理系統(tǒng)</span><span class="userinfo">{$admin.username}【{$role.title}】<span><a href="javascript:;" onclick="logout()">退出</a></span></span></div><!--菜單--><div class="menu" id="menu"><div class="layui-collapse" lay-accordion>{volist name="menus" id="vo"}<div class="layui-colla-item"><h2 class="layui-colla-title">{$vo.title}</h2><div class="layui-colla-content{$i==1?' layui-show':''}"><?php if(isset($vo['children']) && $vo['children']){?><ul class="layui-nav layui-nav-tree" lay-filter="test">{volist name="vo.children" id="cvo"}<li class="layui-nav-item"><a href="javascript:;" onclick="menuFire(this)" src="/admins.php/admins/{$cvo.controller}/{$cvo.method}">{$cvo.title}</a></li>{/volist}</ul><?php }?></div></div>{/volist}</div></div><!--主操作頁面--><div class="main"><iframe src="/admins.php/admins/Home/welcome" onload="resetMainHeight(this)" style="width: 100%;height: 100%;" frameborder="0" scrolling="0"></iframe></div><script>layui.use(['element','layer'], function(){var element = layui.element;$ = layui.jquery;layer = layui.layer;resetMenuHeight();});// 重新設(shè)置菜單容器高度function resetMenuHeight(){var height = document.documentElement.clientHeight - 50;$('#menu').height(height);}// 重新設(shè)置主操作頁面高度function resetMainHeight(obj){var height = parent.document.documentElement.clientHeight - 53;$(obj).parent('div').height(height);}// 菜單點擊function menuFire(obj){// 獲取urlvar src = $(obj).attr('src');// 設(shè)置iframe的src$('iframe').attr('src',src);}// 退出function logout(){layer.confirm('確定要刪除嗎?', {btn: ['確定','取消']}, function(){$.get('/admins.php/admins/account/logout',function(res){if(res.code>0){layer.msg(res.msg,{'icon':2});}else{layer.msg(res.msg,{'icon':1});setTimeout(function(){window.location.href="/admins.php/admins/account/login";},1000);}},'json');});}
</script>
</body>
</html>

welcome.html

<!DOCTYPE html>
<html>
<head><title></title>
</head>
<body><div style="text-align: center;color:gray;font-size: 20px;"><h1>歡迎使用后臺管理系統(tǒng)</h1></div>
</body>
</html>

第一階段完成?

Thinkphp框架一小時搭建后端(2)https://blog.csdn.net/kris_yifan/article/details/122727458

總結(jié)

以上是生活随笔為你收集整理的thinkphp5框架一小时搭建一个php后端(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。