基于LAMP的网站后台管理系统的设计与实现

时间:2022-07-03 08:32:56

基于LAMP的网站后台管理系统的设计与实现

摘要:网站后台管理系统是一种为站点前台网页提供新闻信息管理的集中环境,它为网站的维护提供极大的便利。文章概要阐述了网站后台管理系统所要实现的基本功能,并通过介绍在基于LAMP的环境中搭建该系统使用的主要关键性技术,为类似WEB网站管理系统的设计提供技术参考。

关键词:LAMP;管理模块;SQL注入;三层架构

中图分类号:TP393文献标示码:A 文章编号:1009-3044(2011)08-1780-03

Design and Implementation of Website Management System Based on LAMP

ZHANG Yi-feng

(Dongguang Science and Technology School, Dongguang 523106, China)

Abstract: The Website Management System is an environment to provide information distribution services for the website. It provides the website maintenance with great convenience. This paper introduces the basic functions as a Website Management System and the key technology to build this system in the environment base on LAMP. These Provide a technical reference for the website design like this system.

Key words: LAMP; management module; SQL injection; multiplayer architecture

该系统是基于管理网站信息的便利性和网站系统的可扩展性而设计的。系统采用的LAMP(Linux+Apache+MYSQL+PHP)架构是目前国际流行的Web框架。该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言。所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构。它具有通用、跨平台、高性能、低价格的优势[1]。LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。采用LAMP架构搭建的网站使得系统开发具有开放性、低成本、安全性、适用性以及易部署等特点。

1 主要功能简介

系统实现了在线新闻类别管理;新闻审核,新闻增删改处理;用户权限管理;数据批量上传;数据库备份等功能。系统主要功能模块如图1所示。

其中,分类管理模块是对新闻进行分类管理,以便在前台页面显示或隐藏不同的新闻栏目。新闻管理模块可以对各分类中的新闻进行相关操作,并由一定权限的用户对新闻进行审核,以决定该新闻是否。用户管理模块是对注册用户进行资料维护并分配或撤销相关权限。

2 数据库设计

系统采用MYSQL数据库管理系统。该系统已被广泛应用在Internet上的中小型网站中,具有体积小、速度快、总体拥有成本低、开放源码、支持Windows、FreeBSD、Linux等多种操作系统等优点。它为多种编程语言提供了API,这些编程语言包括C、C++、Java、Perl、PHP等,提供TCP/IP、ODBC和JDBC等多种数据库连接途径[1,3]。

系统有8个主要的数据表,分别为用户表user,用户权限表userrole,分类表catetgory,分类权限表categoryrole,模块表module,模块权限表modulerole,新闻表news,权限表role等。数据表大致结构及关系如图2所示。

其中部分数据表说明:

1)新闻表news中每条新闻都分属不同的分类category。

2)模块module对应后台管理系统中的各项功能,如图3所示。

3)模块表中的字段文件路径file_path记录的是相应模块的管理页面文件的存储路径及页面文件名,以方便加载。

4)模块的显示与否和登录的用户user有关,不同权限role的用户进入管理后台,提供的管理权限不同,也即模块显示类别也不同。

5)分类表对所有新闻进行分类,并赋予不同的权限,以使得不同权限的用户只能编辑修改相应权限的新闻。

3 主要关键技术

3.1 管理模块分级

本系统中,对每个管理模块都进行编号,编号施行分级处理。如:父级模块列表编号采用两位。如图3中“系统管理”、“新闻”编号分别为10、11等。子级模块编号为四位,如图3中“修改密码”、“权限管理”、“用户管理”编号分别为1000、1001,1002等。其前两位就是其父级模块“系统管理”的编号。其他模块编号以此类推。

采用此种方法编号目的有两点:一、为生成层级菜单提供便利,在后文的代码片段中将加以说明。二、为系统的功能扩展提供了极大的便利,如果要增加父级或子级管理模块只需按上述方法对新增的模块编号即可。管理模块列表生成的主要代码如下:

$rolecode=$_SESSION['rolecode'];//捕获登录用户的权限号,根据权限显示相关的管理模块

$Arr_F=$module->QueryModule_Father($rolecode);//根据权限号查询登录用户能控制的所有一级管理模块的名称modulename和模块编号moduleid

for($i=0;$i

//此处生成父级模块名称,并将其设置为空链接,在其单击事件onClick中激发一个用js编写的可实现菜单折叠函数,详细代码略……

$Arr_S=$module->QueryModule_Son ($rolecode,$Arr_F[$i]['moduleid']);//根据登录用户的权限号和此用户能管理的父级模块的编号查询出所有其子级模块的详细信息。因为子级模块编号的前两位就是其父级模块编号,所以查询非常方便。

for($j=0;$j

//此处生成子级模块名称,并设置其相应的链接,链接路径为$Arr_S[$j]['file_path'],以便当点击时,链接到相应的管理页面。}

3.2 SQL注入的防范

SQL注入(旁注入侵)是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,故此类入侵具有相当的隐蔽性。攻击者会将一些恶意代码插入到字符串中。然后会通过各种手段将该字符串传递到数据库的实例中进行分析和执行。只要这个恶意代码符合SQL语句的规则,则在代码编译与执行的时候,就不会被系统所发现[2]。防止SQL注入的关键是过滤用户传入的非法关键字,如空格,逗号,单引号等。为了防范大多数类型的SQL注入,系统编写了一个函数SafeRequest,以代替$_REQUEST方法。程序代码如下:

上一篇:Flash课件中交互练习题的制作 下一篇:Java语言中对象内存分配过程的研究