3 4 5 6 thinkphp5框架一小时搭建一个php后端(1) - 11GX
首页 > thinkphp5框架一小时搭建一个php后端(1)

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

开发环境使用phpstudy

编辑器用sublime

数据库navicat

需要下载composer

先配置好本地域名,然后需要我们将资源引入到项目里面

下载地址www.layui.com.

layui框架有很多我们后台开发需要的控件,帮助我们高效完成后台搭建。

先创建我们的入口文件admins.php,接着我们在application里面建立一个admins的目录。

接着我们需要创建登录需要用到的控制器。

Account.php

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'=>'用户已被禁用')));}// 设置用户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



登录

后台管理系统


 按照自己的喜好设计,框架网里面有样式。

接着需要我们创建管理员数据库

接着封装数据库访问类

建好如图所示的文件夹,编辑Sysdb.php

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;}}

最后需要我们需要进行登录验证,这里我们需要使用composer。

在config.php里面添加配置


// +----------------------------------------------------------------------return [// +----------------------------------------------------------------------// | 应用设置// +----------------------------------------------------------------------// 应用调试模式'app_debug'              => true,// 应用Trace'app_trace'              => false,// 应用模式状态'app_status'             => '',// 是否支持多模块'app_multi_module'       => true,// 入口自动绑定模块'auto_bind_module'       => false,// 注册的根命名空间'root_namespace'         => [],// 扩展函数文件'extra_file_list'        => [THINK_PATH . 'helper' . EXT],// 默认输出类型'default_return_type'    => 'html',// 默认AJAX 数据返回格式,可选json xml ...'default_ajax_return'    => 'json',// 默认JSONP格式返回的处理方法'default_jsonp_handler'  => 'jsonpReturn',// 默认JSONP处理方法'var_jsonp_handler'      => 'callback',// 默认时区'default_timezone'       => 'PRC',// 是否开启多语言'lang_switch_on'         => false,// 默认全局过滤方法 用逗号分隔多个'default_filter'         => '',// 默认语言'default_lang'           => 'zh-cn',// 应用类库后缀'class_suffix'           => false,// 控制器类后缀'controller_suffix'      => false,// +----------------------------------------------------------------------// | 模块设置// +----------------------------------------------------------------------// 默认模块名'default_module'         => 'index',// 禁止访问模块'deny_module_list'       => ['common'],// 默认控制器名'default_controller'     => 'Index',// 默认操作名'default_action'         => 'index',// 默认验证器'default_validate'       => '',// 默认的空控制器名'empty_controller'       => 'Error',// 操作方法后缀'action_suffix'          => '',// 自动搜索控制器'controller_auto_search' => false,// +----------------------------------------------------------------------// | URL设置// +----------------------------------------------------------------------// PATHINFO变量名 用于兼容模式'var_pathinfo'           => 's',// 兼容PATH_INFO获取'pathinfo_fetch'         => ['ORIG_PATH_INFO', 'REDIRECT_PATH_INFO', 'REDIRECT_URL'],// pathinfo分隔符'pathinfo_depr'          => '/',// URL伪静态后缀'url_html_suffix'        => 'html',// URL普通方式参数 用于自动生成'url_common_param'       => false,// URL参数方式 0 按名称成对解析 1 按顺序解析'url_param_type'         => 0,// 是否开启路由'url_route_on'           => true,// 路由使用完整匹配'route_complete_match'   => false,// 路由配置文件(支持配置多个)'route_config_file'      => ['route'],// 是否强制使用路由'url_route_must'         => false,// 域名部署'url_domain_deploy'      => false,// 域名根,如thinkphp.cn'url_domain_root'        => '',// 是否自动转换URL中的控制器和操作名'url_convert'            => true,// 默认的访问控制器层'url_controller_layer'   => 'controller',// 表单请求类型伪装变量'var_method'             => '_method',// 表单ajax伪装变量'var_ajax'               => '_ajax',// 表单pjax伪装变量'var_pjax'               => '_pjax',// 是否开启请求缓存 true自动缓存 支持设置请求缓存规则'request_cache'          => false,// 请求缓存有效期'request_cache_expire'   => null,// 全局请求缓存排除规则'request_cache_except'   => [],// +----------------------------------------------------------------------// | 模板设置// +----------------------------------------------------------------------'template'               => [// 模板引擎类型 支持 php think 支持扩展'type'         => 'Think',// 模板路径'view_path'    => '',// 模板后缀'view_suffix'  => 'html',// 模板文件名分隔符'view_depr'    => DS,// 模板引擎普通标签开始标记'tpl_begin'    => '{',// 模板引擎普通标签结束标记'tpl_end'      => '}',// 标签库标签开始标记'taglib_begin' => '{',// 标签库标签结束标记'taglib_end'   => '}',],// 视图输出字符串内容替换'view_replace_str'       => [],// 默认跳转页面对应的模板文件'dispatch_success_tmpl'  => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl','dispatch_error_tmpl'    => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',// +----------------------------------------------------------------------// | 异常及错误设置// +----------------------------------------------------------------------// 异常页面的模板文件'exception_tmpl'         => THINK_PATH . 'tpl' . DS . 'think_exception.tpl',// 错误显示信息,非调试模式有效'error_message'          => '页面错误!请稍后再试~',// 显示错误信息'show_error_msg'         => false,// 异常处理handle类 留空使用 	hinkexceptionHandle'exception_handle'       => '',// +----------------------------------------------------------------------// | 日志设置// +----------------------------------------------------------------------'log'                    => [// 日志记录方式,内置 file socket 支持扩展'type'  => 'File',// 日志保存目录'path'  => LOG_PATH,// 日志记录级别'level' => [],],// +----------------------------------------------------------------------// | Trace设置 开启 app_trace 后 有效// +----------------------------------------------------------------------'trace'                  => [// 内置Html Console 支持扩展'type' => 'Html',],// +----------------------------------------------------------------------// | 缓存设置// +----------------------------------------------------------------------'cache'                  => [// 驱动方式'type'   => 'File',// 缓存保存目录'path'   => CACHE_PATH,// 缓存前缀'prefix' => '',// 缓存有效期 0表示永久缓存'expire' => 0,],// +----------------------------------------------------------------------// | 会话设置// +----------------------------------------------------------------------'session'                => ['id'             => '',// SESSION_ID的提交变量,解决flash上传跨域'var_session_id' => '',// SESSION 前缀'prefix'         => 'think',// 驱动方式 支持redis memcache memcached'type'           => '',// 是否自动开启 SESSION'auto_start'     => true,],// +----------------------------------------------------------------------// | Cookie设置// +----------------------------------------------------------------------'cookie'                 => [// cookie 名称前缀'prefix'    => '',// cookie 保存时间'expire'    => 0,// cookie 保存路径'path'      => '/',// cookie 有效域名'domain'    => '',//  cookie 启用安全传输'secure'    => false,// httponly设置'httponly'  => '',// 是否使用 setcookie'setcookie' => true,],//分页配置'paginate'               => ['type'      => 'bootstrap','var_page'  => 'page','list_rows' => 15,],// 验证码配置'captcha' => [// 验证码的字符集'codeSet' => '23456789abcdefhijkmnpqrstuvwxyzABCDEFHJKMNPQRSTUVWXYZ',// 设置验证码字体大小'fontSize' => 18,// 添加混淆曲线'useCurve' => false,// 设置图片的高度、宽度'imageW' => 150,'imageH' => 35,// 验证码位数'length' =>4,// 验证成功后重置'reset' =>true],
];

接着为了防止非法用户访问

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

home.php

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 

_admin = session('admin');// 未登录的用户不允许访问if(!$this->_admin){header('Location: /admins.php/admins/Account/login');exit;}$this->assign('admin',$this->_admin);// 判断用户是否有权限$this->db = new Sysdb;}	
}

登录部分完结

下面是对后台界面进行编写

写两个

index.html





{$site.values}-后台管理系统{$admin.username}【{$role.title}】退出

welcome.html





欢迎使用后台管理系统

第一阶段完成 

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

更多相关:

  • php 如果在类中定义变量,在类的方法中调用时应该加上$this-> .     class ClassName {private $a = 333;function __construct(){$this->a = 2222;}public function bbb($value=''){echo $this->a;} } $b...

  • 今天我们来看UrlRule.php

  • 【数据对象映射模式】 是将对象和数据存储映射起来,对一个对象的操作会映射为对数据存储的操作。例如在代码中 new 一个对象,使用数据对象映射模式就可以将对象的一些操作比如设置一些属性,就会自动保存到数据库,跟数据库中表的一条记录对应起来。   【代码实现】 在代码中实现数据对象映射模式,我们将实现一个 ORM(对象关系映射 Objec...

  •