05 明日导航后台管理设计_第1页
05 明日导航后台管理设计_第2页
05 明日导航后台管理设计_第3页
05 明日导航后台管理设计_第4页
05 明日导航后台管理设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

明日导航后台管理设计,本讲大纲:,1、后台管理概述2、通过系统配置文件存储后台登录数据3、后台管理架构解析4、ThinkPHP框架中的分页技术5、后台管理视图中应用的模板标签6、后台登录7、后台管理主页8、高级类别管理9、判断访问用户的权限10、操作提示页面,支持网站:,后台管理概述,明日导航的后台管理系统可以归纳为三部分内容,第一部分,后台登录;第二部分,对网站中设置的分类数据和导航链接数据进行管理;第三部分,退出后台管理系统。明日导航后台管理系统主页的运行效果如图所示。,通过系统配置文件存储后台登录数据,在后台登录模块中,常用的技术,包括SESSION机制和加密技术。加密技术又分为很多种。笔者在开发本后台模块时,思考了很多。是不是,将管理员名称和密码统一加密保存在数据库中就安全了呢?其实并不是这样的。高明的SQL注入手法可以很容易的取得密文。所以,在本项目中,笔者并没有采用将密码保存到数据库中,而是通过配置文件,隐式的保存登录的相关信息。方法是在系统目录Common下,创建PHP脚本文件admin.php。其代码如下:这样,用户不仅可以随时随地的更改用户名和密码,并很好的实现了密码文件的安全性。如果,用户有兴趣的话,独立编写一个日志文件。记录Session的使用信息。从而达到检测非法用户暴力破解的情况。,通过系统配置文件存储后台登录数据,如此存储后台管理员的登录信息后,哪么在后台登录处理的admin()方法中,需要先载入配置文件中设置的用户名和密码。然后,获取表单中提交的用户名和密码与SESSION变量中存储的用户名和密码进行比较,判断其是否是管理员。Admin()方法中验证管理员是否登录成功的代码如下:publicfunctionadmin()/后台登录处理方法Load(admin);/载入配置文件中设置的用户名和密码$username=$_POSTtext;/获取用户名$userpwd=$_POSTpwd;if($username=|$userpwd=)/判断用户名和密码是否为空$this-assign(hint,文本框内容不能为空);$this-assign(url,_URL_);$this-display(information);/指定提示信息模板页elseif($username!=Session:get(MR)|$userpwd!=Session:get(MRKJ)/验证登录用户是否正确$this-assign(hint,您不是权限用户);$this-assign(url,_URL_/);$this-display(information);else$_SESSIONusername=$username;/将登录用户名赋给SESSION变量$_SESSIONuserpwd=$userpwd;$this-assign(hint,欢迎管理员回归);$this-assign(url,_URL_/adminIndex);/设置后台管理主页链接$this-display(information);,后台管理架构解析,后台管理的登录从项目根目录下的admin.php入口文件开始,运行此文件生成后台管理项目文件夹,其具体存储于根目录下的Admin文件夹下。在25AdminLibAction目录下创建后台控制器IndexAction,所有后台的操作方法都存储于这个控制器中;在25AdminTpl目录下,创建与IndexAction控制器对应的模板文件夹Index,在这个模板文件夹下存储控制器中方法对应的模板文件。明日导航后台管理架构如图所示。,ThinkPHP框架中的分页技术,在ThinkPHP框架中,封装了自己的分页类,其存储于ThinkPHP框架的25ThinkPHPLibORGUtil目录下,在应用时,需要在控制器中通过import()标签载入类文件,然后执行类的实例化操作,最后调用其中的方法完成数据的分页查询和输出。其关键代码如下:import(ORG.Util.Page);/载入分页类$count=$com-count();/统计数据库中的记录数$Page=newPage($count,8);/实例化分页类$show=$Page-show();/获取分页超级链接$list=$com-order(id)-limit($Page-firstRow.,.$Page-listRows)-select();/执行分页查询$this-assign(list,$list);/将分页查询结果赋给模板变量$this-assign(page,$show);/将获取的分页超级链接赋给模板变量通过import(ORG.Util.Page);载入分页类。实例化分页类,同时可以传递三个参数:第一个是页面总记录数,第二个是每页显示的记录数,第三个为可选参数,通过分页超级链接的值。调用分页类中的show()方法,输出分页超级链接。Page:查询分页。属于新增特性,可以更加快速的进行分页查询。Page方法的用法和limit方法类似,格式为:Page(page,listRows)page表示当前的页数,listRows表示每页显示的记录数。例如:Page(2,10)。表示每页显示10条记录,获取第2页的数据listRow如果不写的话,会读取limit(length)的值,例如:limit(25)-page(3);。表示每页显示25条记录,获取第3页的数据。如果limit也没有设置的话,则默认为每页显示20条记录。,后台管理视图中应用的模板标签,(1)在明日导航的后台管理系统中,应用模板引擎中的switch标签创建一个简单的网页框架,在adminindex()方法中,根据超级链接传递的值实现在不同页面之间的跳转操作。Switch()标签的语法如下:输出内容1输出内容2默认情况Switch标签,类似于PHP中的switch语句。其中name属性可以使用函数以及系统变量,例如:admindefault对于case的value属性可以支持多个条件的判断,使用“|”进行分割,例如:图像格式其他格式表示如果$_GETtype是gif、png或者jpg的话,就判断为图像格式。也可以对case的value属性使用变量,例如:adminmemberdefault使用变量方式的情况下,不再支持多个条件的同时判断,后台管理视图中应用的模板标签,(2)应用标签中的系统变量,输出超级链接传递的参数值。其语法如下:$Think.get.pageNumber输出超级链接变量pageNumber传递的值。(3)应用include标签包含外部模板文件。其应用的语法如下:/使用完整文件名包含/包含当前模块的其他操作模板文件/包含其他模块的操作模板/包含其他模板主题的模块操作模板/用变量控制要导入的模版完整文件名的包含,例如:。这种情况下,模板文件名必须包含后缀。使用完整文件名包含的时候,特别要注意文件包含指的是服务器端包含,而不是包含一个URL地址,也就是说file参数的写法是服务器端的路径,如果使用相对路径的话,是基于项目的入口文件位置。用变量包含,例如:。给$tplName赋不同的值就可以包含不同的模板文件,变量的值的用法和上面的用法相同。(4)通过foreach标签循环输出模板变量传递的数据。其语法如下:$vo.id$参数name指定在控制器中设置的模板变量名称,必须与控制器中设置的名称相同;参数item在foreah语句中自行定义的变量,用于输出模板变量传递的数据。,后台管理视图中应用的模板标签,(5)通过if标签完成更加复杂的判断操作。例如:判断当变量name的值等于1或者大于100时输出value1的值,或者当name的值等于2时输出value2的值,否则输出value3的值。其代码如下value1value2value3在condition属性中可以支持eq等判断表达式,等同于比较标签,但是不支持带有“”“ThinkPHPotherFramework,后台登录,前面已经对明日导航后台管理系统的架构和所涉及的技术进行了详细讲解。下面讲解后台登录模块的实现方法。后台登录模块的创建由三部分组成:第一部分设置后台登录的用户名和密码,已经在25.5.2节中进行了详细讲解;第二部分,在后台管理系统的默认视图文件index.html中创建表单,将管理员的用户名和密码提交到IndexAction控制器的admin方法中进行处理。创建表单的代码如下:第三部分,在IndexAction控制器中创建admin()方法,获取表单提交的用户名和密码,与SESSION变量中存储的用户名和密码进行比较,判断用户提交的名称和密码是否正确。如果正确则说明是管理员,将登录用户名和密码存储到SESSION变量中,在information.html模板页中输出“欢迎管理员回归”,在4秒钟后跳转到后台管理主页;否则,可能是提交用户名或者密码为空,或者提交的用户名或者密码不正确,哪么将在information.html模板页中输出“用户名或者密码不能为空”或者“您不是权限用户”,在4秒钟后跳转到后台登录页面。Admin()方法的关键代码如下:,后台管理主页,管理员登录成功后,将跳转到明日导航的后台管理主页中,在后台管理主页中,根据超级链接传递的参数值,实现不同子功能页面之间的跳转操作,进而实现对应的管理操作。后台管理主页由两部分组成:第一部分是在IndexAction控制器中定义adminindex()方法。首先,调用当前控制器中的checkEnv()方法判断当前用户是否具有访问权限。然后,应用switch()语句,根据$_GET方法获取的超级链接参数值进行判断,当参数值为high时,执行IndexAction控制器中的high()方法;当参数值为空时,则执行默认的common()方法。最后,指定模板页adminindex。Adminindex()方法的代码如下:第二部分,在25AdminTpldefaultIndex模板文件夹下,创建adminindex.html模板文件,创建后台管理中的功能导航菜单。应用switch标签,根据系统变量$Think.get.type_link获取的参数值进行判断,应用include标签包含不同的模板文件。其关键代码如下:当管理员进入后台管理主页后,单击“高级类别管理”超级链接时,后台管理主页的运行效果如图所示。,高级类别管理,在后台管理主页中,单击“高级类别管理”超级链接,在主页中将分页输出高级类别数据,并且在每条记录之后都添加了“删除”超级链接,用于删除指定的数据。此时,如果单击管理员左侧的“类别添加”超级链接,将跳转到高级类别添加页面,完成高级类别的添加操作,如图所示。如果单击“类别管理”超级链接则返回到高级类别输出的页面。,高级类别管理,高级类别管理包括3个子功能,分别是:数据的添加、浏览和删除。其具体实现方法如下:(1)在IndexAction控制器中创建high()方法,根据超级链接传递的参数值进行判断,是执行数据的添加操作,还是执行数据的分页查询。(2)在25AdminTpldefaultIndex模板文件夹下,创建high.html模板文件,应用switch标签进行条件判断,如果超级链接传递的参数值是insert,哪么输出高级类别添加的表单;如果超级链接传递的是admin,则应用foreach语句循环输出模板变量传递的高级类别数据,并且创建“删除”超级链接,链接到IndexAction控制器下的deletetype()方法,完成删除操作,以记录的ID值为参数值;默认输出高级类别数据。(3)在IndexAction控制器中创建deletetype()方法,根据超级链接传递的ID值,执行delete删除语句,删除高级类别的数据。在删除高级类别中数据的同时,与其关联的中级类别、初级类别和子类别中的数据也都将被删除。,判断访问用户的权限,在明日导航后台管理系统中,为了避免其他用户登录后台管理系统给网站带来不必要的麻烦,我们设置了后台登录功能,只有是正确登录的用户才可以对数据进行管理。哪么在后台中是如何判断用户权限的呢?其原理是:当管理员登录成功后,将其登录的用户名和密码存储到SESSION变量中,由此我们可以在执行每项操作之前,判断当前用户SESSION变量中存储的用户名和密码与系统指定的用户名和密码是否相同,如果相同则具备数据的操作权限,否则将提示“您不是权限用户”,并且跳转到管理员登录页面。我们将这个权限判断的操作封装到checkEnv()方法中,在这个方法中完成对当前用户权限的判断操作,如果用户具备访问权限,则返回true,否则返回false。checkEnv()方法的语法如下:publicfunctioncheckEnv()if($_SESSIONusername!=session:get(MR)and$_SESSIONuserpwd!=session:get(MRKJ)/判断用户名和密码是否正确$this-assign(hint,您不是权限用户);$this-assign(url,_URL_/);$this-display(information);$login=false;else$login=true;return

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论