技术心得记录:新闻cms管理系统(二)

简介: 技术心得记录:新闻cms管理系统(二)

1、页面准备:


(1)前端资源的导入:将准备好的页面添加到项目中,放到Public目录下(公共的页面样式、js、图片等资源)


(2)添加登录的视图模板


  将登录页面的视图放到Amin>View>Login>index.html中


<!DOCTYPE html

[/span>html lang="zh-CN"

[/span>head

[/span>meta charset="utf-8"

[/span>meta http-equiv="X-UA-Compatible" content="IE=edge"

[/span>meta name="viewport" content=""


[/span>meta name="description" content=""

[/span>meta name="author" content=""

[/span>link rel="icon" href=""

[/span>title


[/span>link href="/Public/css/bootstrap.min.css" rel="stylesheet"


[/span>link href="signin.css" rel="stylesheet"




[/span>body

[/span>style

.s_center {


margin-left: auto;


margin-right: auto;


}



[/span>div class="s_center container col-lg-6 "

[/span>form class="form-signin" enctype="multipart/form-data" method="post"

[/span>h2 class="form-signin-heading"

[/span>label class="sr-only"

[/span>input type="text" class="form-control" name="username" placeholder="请填写用户名" required autofocus

[/span>br />


[/span>label class="sr-only"

[/span>input type="password" name="password" id="inputPassword" class="form-control" placeholder="密码" required

[/span>br />


[/span>button class="btn btn-lg btn-primary btn-block" type="button" onclick="login.check()"



[/span>script src="/Public/js/jquery.js"




(3)添加登录的控制器和方法


  完成代码实现:(文件位置:Admin>Controller>LoginController.class.php)


<?php


namespace Admin\Controller;


use Think\Controller;


class LoginController extends Controller {


public function index(){


$this->display(); //默认加载View>Login>index.html


}


}


(3)浏览器访问


(4)页面显示


2、数据库准备


(1)数据库恢复: >mysql : source /var/www/html/cms.sql


(2)数据库配置:(位置:Common>Conf>config.php和db.php)


1)config.php配置


//允许加载其他配置文件,其文件名为(多个文件的文件名用逗号隔开)


'LOAD_EXT_CONFIG' => 'db'


2)db.php数据库配置


<?php


return array(


'DB_TYPE' => 'mysql',


'DB_HOST' => '127.0.0.1', //数据库服务器主机ip地址


'DB_USER' => 'root', //数据库用户名


'DB_PWD' => '', //数据库用户密码


'DB_PORT' => 3306, //数据库端口号


'DB_NAME' => 'cms', //数据库名


'DB_CHARSET' => 'utf8', //数据库编码


'DBPREFIX' => 'cms' //数据库前缀名


);


2、layer插件


(1)layer插件准备:


官方下载地址:


官方教程:


layer插件包括extend目录、skin目录和layer.js文件


完整文件放到项目下的dialog目录(位置: Public>js>dialog)


(2)插件二次封装:


为便于在此项目中使用,再对项目需要的弹出层进行二次封装,命名为dialog.js(位置:Public>js>dailog.js)


(3)常用弹出层:


1)错误弹出层


// 错误弹出层


error: function(message) {


layer.open({


content:message,


icon:2,


title : '错误提示',


});


},


2)成功弹出层


// 成功弹出层


success : function(message,url) {


layer.open({


content : message,


icon : 1,


yes : function(){


location.href=url;


},


});


},


3)确认弹出层


// 确认弹出层


confirm : function(message, url) {


layer.open({


content : message,


icon:3,


btn : 【'是','否'】,


yes : function(){


location.href=url;


},


});


}


4)无须跳转弹出层


//无需跳转到指定页面的确认弹出层


toconfirm : function(message) {


layer.open({


content : message,


icon:3,


btn : 【'确定'】,


});


}


(4)弹出层的调用:


1)引入本系统的类库dialog.js文件 (在Amin>View>Login>index.html中引入)


[/span>script src="/Public/js/dialog.js"

2)引入第三方插件layer.js文件(在Amin>View>Login>index.html中引入)


[/span>script src="/Public/js/dialog/layer.js"

3)调用(js文件)


dialog.error("这是弹出的消息内容");


3、数据校验


(1)数据提交的两种方式:


  1)同步提交数据:页面跳转(体验不好)


  2)异步提交数据:通过js的ajax请求,页面不跳转,异步请求地址


(2)异步请求的实现:


  1)jquery框架的ajax实现手册


  2).ajax()、.ajax()、.ajax()、? .get()、 $.post()三种方式的理解


(3)前端登录的业务处理:


1)js校验:(位置: Public>js>admin>login.js)


/


前端登录业务类


/


var login = {


check : function() {


// 获取登录页面中的用户名 和 密码


var username = $('input【name="username"】').val();


var password = $('input【name="password"】').val();


if(!username) {


dialog.error('用户名不能为空');


}


if(!password) {


dialog.error('密码不能为空');


}


var url = "/index.php?m=admin&c=login&a=check";


var data = {'username':username,'password':password};


// 执行异步请求 $.post


$.post(url,data,function(result){


if(result.status == 0) {


return dialog.error(result.message);


}


if(result.status == 1) {


return dialog.success(result.message, '/index.php?m=admin&c=index');


}


},'JSON');


}


}


2)html表单触发(Amin>View>Login>index.html文件)


[/span>button class="btn btn-lg btn-primary btn-block" type="button" onclick="login.check()"

3)login.js文件引入(在Amin>View>Login>index.html中引入)


[/span>script src="/Public/js/admin/login.js"

3)浏览器运行效果


(4)后端php业务处理:


1)check方法的数据校验:


$username = $_POST【'username'】;


$password = $_POST【'password'】;


if(!trim($username)) {


return show(0,'用户名不能为空');


}


if(!trim($password)) {


return show(0,'密码不能为空');


}


前端的数据校验是js实现的,其在浏览器中是可视的,用户是可看到的,为避免用户对修改js文件规避数据校验,所以必须在服务器端再次校验


show()公共方法的封装:(多处地方要用到,所以作为公共函数封装到Common/Common/function.php文件)


/展示数据


@param $status 状态码


@param $message 展示的消息内容


@param array $data


/


function show($status, $message,$data=array()) {


$result = array(


'status' => $status,


'message' => $message,


'data' => $data,


);


exit(json_encode($result));


}


相关文章
|
JSON JavaScript 前端开发
iOS小技能: 开发 uni-app 原生插件(支持iOS Extension)
术语:uni原生插件指的是将`原生开发的功能按照规范封装成插件包`,然后即可在 uni-app 前端项目中通过js调用原生能力。
2034 0
iOS小技能: 开发 uni-app 原生插件(支持iOS Extension)
|
存储 监控 安全
Zabbix登录绕过漏洞复现(CVE-2022-23131)
最近在复现zabbix的漏洞(CVE-2022-23131),偶然间拿到了国外某公司zabbix服务器。Zabbix Sia Zabbix是拉脱维亚Zabbix SIA(Zabbix Sia)公司的一套开源的监控系统。该系统支持网络监控、服务器监控、云监控和应用监控等。Zabbix Frontend 存在安全漏洞,该漏洞源于在启用 SAML SSO 身份验证(非默认)的情况下,恶意行为者可以修改会话数据,因为存储在会话中的用户登录未经过验证。 未经身份验证的恶意攻击者可能会利用此问题来提升权限并获得对 Zabbix 前端的管理员访问权限。
2095 0
Zabbix登录绕过漏洞复现(CVE-2022-23131)
|
9月前
|
Kubernetes 数据可视化 Java
SAE 实现应用发布全过程可观测
本文聚焦阿里云Serverless应用引擎(SAE)用户在发布过程中的痛点,如“发布效率低、实例启动过程不透明”等问题。通过分步骤可视化解决方案,帮助用户明确问题、理解原因并最终解决,提升SAE平台使用体验。文章详细剖析了发布过程慢、信息透出不足及实例启动黑盒等痛点,并提出通过可观测、可解释和可优化的策略解决问题,同时展示了具体实现效果与后续优化规划。
577 68
|
7月前
|
机器学习/深度学习 数据可视化 Python
Scanpy 分析 3k PBMCs:寻找 marker 基因
Scanpy 分析 3k PBMCs:寻找 marker 基因
Scanpy 分析 3k PBMCs:寻找 marker 基因
|
10月前
|
Dubbo 应用服务中间件 API
什么是API网关
什么是API网关
|
安全 应用服务中间件 API
Netty API网关实操系列(一)
Netty API网关实操系列(一)
|
网络虚拟化
生成树协议(STP)及其演进版本RSTP和MSTP,旨在解决网络中的环路问题,提高网络的可靠性和稳定性
生成树协议(STP)及其演进版本RSTP和MSTP,旨在解决网络中的环路问题,提高网络的可靠性和稳定性。本文介绍了这三种协议的原理、特点及区别,并提供了思科和华为设备的命令示例,帮助读者更好地理解和应用这些协议。
716 4
|
SQL 安全 JavaScript
渗透测试之分享常用工具、插件和脚本(干货)
渗透测试之分享常用工具、插件和脚本(干货)
渗透测试之分享常用工具、插件和脚本(干货)
|
机器学习/深度学习
数据结构学习记录——堆的小习题(对由同样的n个整数构成的二叉搜索树(查找树)和最小堆,下面哪个说法是不正确的)
数据结构学习记录——堆的小习题(对由同样的n个整数构成的二叉搜索树(查找树)和最小堆,下面哪个说法是不正确的)
246 1
极值分析:分块极大值BLOCK-MAXIMA、阈值超额法、广义帕累托分布GPD拟合降雨数据时间序列
极值分析:分块极大值BLOCK-MAXIMA、阈值超额法、广义帕累托分布GPD拟合降雨数据时间序列
极值分析:分块极大值BLOCK-MAXIMA、阈值超额法、广义帕累托分布GPD拟合降雨数据时间序列

热门文章

最新文章