由图7可以看到首页是一张大型的表单,用于用户填写论文的相关信息以及内容,然后提交给后台保存为xml文件。这里就需要编写javascript脚本程序操作页面表单,将用户填写的信息封装成xml格式的。通过对表单的分析,找出需要操作的对象,主要是要取出<input>标签和<textare>标签中内容,一一对应封装到xml里面。这里主要通过两个函数给予实现,一个是function XMLWriter(),一个是function xmlEncap(),XMLWriter()为xmlEncap()提供了封装xml的操作,而xmlEncap()是要取出不同的对象调用XMLWriter()中的方法。 http://www.paper51.com 5.3.3 通过XMLHttpRequest对象发送XML 内容来自www.paper51.com 这是Ajax技术运用的一部分。前台通过function createXMLHttpRequest创建XMLHttpRequest对象,代码如下: paper51.com
copyright paper51.com 图5-4创建XMLHttpRequest对象代码 paper51.com 对于有的浏览器不支持XMLHttpRequest对象,但是提供了ActiveX控件,考虑到兼容性程序支持了不同浏览器创建XMLHttpRequest对象。创建好对象后便可在upload方法中使用对象的方法进行与服务器端的通信。主要方法使用情况如下: paper51.com 1.设置传送方式:XMLHttpReq.open("post", action,true); copyright paper51.com 2. XMLHttpReq.setRequestHeader("Content-Type","text/xml")设置http协议header类型; paper51.com 3.发送XML: XMLHttpReq.send(xml); copyright paper51.com 4.得到readyState和status属性的值,当XMLHttpReq.readyState 为4 表示接收服务器响应完成,XMLHttpReq.status为200表示接收到的信息没有异常。 copyright paper51.com
5.3.4 Smart template简介 内容来自www.paper51.com
Smarttemplate模板引擎是国外一个开源项目,它由php语言编写,主要用于将php代码与html网页代码进行分离,让程序员可从烦琐的程序嵌套工作中解脱出来,并且提高网页运行的速度,提高开发的效率。 内容来自www.paper51.com 5.3.5 Smart template在本系统中的运用 内容来自www.paper51.com 首先到系统的配置文件中进行配置,配置如下图所示: copyright paper51.com 内容来自www.paper51.com $_CONFIG['template_dir']=ROOT_PATH.'templates/'; 内容来自www.paper51.com $_CONFIG['smarttemplate_compiled'] =ROOT_PATH."templates_c/"; copyright paper51.com
$_CONFIG['smarttemplate_cache']=ROOT_PATH."templates_c/"; paper51.com $_CONFIG['cache_lifetime']=600; 内容来自www.paper51.com
图5-5 smarttemplate在系统中的配置 http://www.paper51.com
配置说明: 内容来自www.paper51.com 1.$_CONFIG['template_dir']是模板文件存放的目录; paper51.com 2.$_CONFIG['smarttemplate_compiled']是模板被smarttemplate编译后存放的目录; 内容来自论文无忧网 www.paper51.com
3.$_CONFIG['smarttemplate_cache']是模板缓存文件存放的目录; 内容来自www.paper51.com 4.$_CONFIG['cache_lifetime']是缓存文件的生存时间 内容来自www.paper51.com 具体在程序中的使用方法如下: http://www.paper51.com $page = new SmartTemplate("template.html" ); 内容来自论文无忧网 www.paper51.com $page->assign( 'TITLE', 'TemplateDemo - Userlist' ); 内容来自www.paper51.com $page->assign( 'user', DB_read_all( 'select * fromris_user' ) ); 内容来自论文无忧网 www.paper51.com
$page->output(); http://www.paper51.com
5.3.6 系统数据库封装与操作 内容来自www.paper51.com 系统中数据库封装与操作共有两个类,一个是db_driver,一个是db_main,其中db_driver继承了db_main。他们封装了数据库的连接和数据库查询,插入,更新记录的操作,并且提供了通过数组形式编写sql语句的方法。 copyright paper51.com 在使用前应该配置好系统的变量,打开config.php配置如下表: copyright paper51.com http://www.paper51.com $INFO['sql_driver'] = 'mysql'; paper51.com
$INFO['sql_host'] = 'localhost'; http://www.paper51.com $INFO['sql_database'] = 'graduate1'; copyright paper51.com $INFO['sql_user'] = 'root'; 内容来自www.paper51.com $INFO['sql_pass'] = ''; http://www.paper51.com $INFO['sql_tbl_prefix'] = ''; paper51.com 图5-6 配置数据库操作系统变量 内容来自论文无忧网 www.paper51.com
配置说明: http://www.paper51.com 1.$INFO['sql_driver']说明采用数据库类型为mysql; http://www.paper51.com 2.$INFO['sql_host']是数据库在网络中的地址; paper51.com 3.$INFO['sql_database']是要操作的数据库名; 内容来自论文无忧网 www.paper51.com 4.$INFO['sql_user']是数据库用户; copyright paper51.com 5.$INFO['sql_pass']是数据库用户的密码; paper51.com
6.$INFO['sql_tbl_prefix']是数据库中表的前缀。 paper51.com 具体在程序中的使用方法如下图所示: 内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com $db = new db_driver(); 内容来自www.paper51.com Update: 内容来自www.paper51.com $db->do_update( 'table', array( 'field' => 'value', 'field2' => 'value2' ), 'id=1' ); 内容来自论文无忧网 www.paper51.com Insert:$db->do_insert( 'table', array( 'field' => 'value', 'field2' => 'value2' ) ); 内容来自www.paper51.com Delete:$db->build_and_exec_query( array( 'delete' => 'table', 'where' => 'id=1' ) ); http://www.paper51.com Select: $db->build_query( array( 'select' => '*', paper51.com 'from' => 'table', 内容来自论文无忧网 www.paper51.com 'where' => 'id=2 and mid=1', 内容来自论文无忧网 www.paper51.com 'order' => 'date DESC', paper51.com 'limit' => array( 0, 30 ) ) ); copyright paper51.com
$db->exec_query(); http://www.paper51.com while( $row = $db->fetch_row() ) { .... } http://www.paper51.com 图5-7 数据库封装的常用操作方法 http://www.paper51.com 5.3.7 系统常用函数封装设计 http://www.paper51.com 类名ConvterSystem,里面封装了分页方法,生成验证码的方法,去掉html代码的方法,截取字符串函数。 copyright paper51.com 管理员登陆页面admin_login.html中,<img src="./admin.php?verify=1" />显示生成的验证码图片,在admin.php中初始化类ConvterSystem,然后在使用ConvterSystem的方法:show_gd_img($number),其中$number是用mt_rand函数随即产生的,这样就可以生成一张带有验证码的图片。 内容来自论文无忧网 www.paper51.com 在分页的操作中,PageLinkR方法提供了链接的生成,需要先对数据库表进行查询得到记录的总数,然后设置好每页显示的记录数,算出一共的页数,再对表进行limit查询,其中limit从第几个记录开始是从URL传过来的。 copyright paper51.com 5.3.8 Apache Rewrite功能在系统中的运用 paper51.com 本系统用到rewrite功能,在环境配置的时候就开启了apache的rewrite模块。Rewrite规则的编写在.htaccess文件中。所有规则编写如下图所示: http://www.paper51.com |