教师博客系统

2020-03-03 04:01:00 来源:范文大全收藏下载本文

CAJViewer 7.1 PHP是一种服务器端、跨平台、Html嵌入式脚本语言,它在快速发展的Web应用中,被越来越多的网站采用。利用PHP进行中小型web开发应用,会使开发工作变得更加简单、高效。本文基于Windows+Apache+Mysql+Php环境,对PHP的开发应用进行了研究,参照软件开发流程开发了一个教师博客系统,并展示了整个开发过程。在开发过程中,利用PHP面向对象编程特性,编写了类库文件,减少了编码的出错率和工作量;利用安装文件对数据库进行初始化,增强了系统的可移植性:利用文本文件存储数据,减小了数据库负担,缩减了系统,加快了运行速度。

PHP is a server-side, cro-platform, and html embedded script language which has many advantages.With the rapid development of web application, PHP has been widely used by more and more websites.It is much easier and efficient to program by PHP for the development of small or medium-sized websites.Based on the Windows+ Apache+Mysql+PHP environment, in this paper, the author studies web applications developed by PHP, and also develops a personal\' blog system according to standard software development framework.During the courses of development, the author programs some cla library files taking advantage of the PHP\'s OOP properties, which reduces the coding mistakes and workload of programming.The system database is initialized by a setup file, which enhances the system portability.Text file is used as database, which lowers the burden of system database, reduces the system scale and enhances the system running speed.

O.问题的提出 O.1博客现状 0.1.1博客简介

blog的全名是Web log,中文意思是“网络日志”,后来缩写为Blog,而博客(Blogger)就是写Blog的人。从理解上讲,博客是“一种表达个人思想、网络链接、内容,按照时间顺序排列,并且不断更新的出版方式”。

随着Blog的快速扩张,它的目的与最初的浏览网页心得已相去甚远。目前网络上数以千计的Bloggers发表和张贴Blog的目的有很大的差异。不过,由于沟通方式比电子邮件、讨论群组更简单和容易,Blog己成为家庭、公司、部门和团队之间越来越盛行的沟通工具,它甚至也逐渐应用于企业内部网络(Intranet)中。

“2004年以来,在国内教师博客也成为热门的网络应用之一。教师博客是教育博客中的一种。教育博客面向教育界,是以教育、教学等教育界话题为主要传播内容的分类博客服务。教师博客特指面向各类教师用户推出的博客服务。教师申请注册一个博客空间后,就相当于在网上建立了一个交流社区,利用互联网新兴的博客(blog)技术,以文字、多媒体等方式,将自己日常的生活感悟、教学心得、教案设计、课堂实录、课件等上传发表,以此开展师生(以及其它网民)之间的传播活动。它超越了传统时空局限(课堂范畴、讲课时间等),促进了教师个人隐性知识显性化,并让全社会可以共享知识和思想。\" 著名的博客中国网、中国教育和科研计算机网等都相继推出了教师博客服务,使博客日益深入地服务于从幼教到大学的各学科教师的教研活动之中,给教育教学工作带来了新的气象。随着教师博客的大规模普及,将在传统基于课堂教学的“教堂式教育模式\"之外,催生出真正开放的“集市式教育模式\",推动人类教育事业的进步。

0.1.2博客开发技术

当前,新浪、搜狐、人民网、博客网、网易、和讯等网站,在不断推出博客服务平台,各自在资源整合与技术的架构上发挥了自身的特点和优势。进行博客技术开发应用,这对中国互联网全面推进博客走近百姓日常生活起到了非常重要的作用。博客技术后台服务功能更加便利和高效。不同的网站都以自己独特的创造性,整合博客技术初级化的缺陷,在综合的基础之上,人们感受到更加完善的博客应用系统被开发出来。新浪博客技术具有传统网络成熟稳定性,搜狐的博客已经具有更完美的形态,博客网的梦之城第二代博客具有更人性化和娱乐性表现;新浪的整体架构与博客网自主聚合编辑系统和网易部落聚集,都体现了博客交流形态复杂性与唯美的结合。

随着博客技术的流行,博客技术形态会更加具有人性化和高效的服务性,网络整体架构会发生更加多样的变化。创新博客技术的引进和使用过程,会提出更多的问题需要从整体架构上进行思考。集娱乐、通讯和新闻、广播、影视和商务、政务、企业、管理等一体性网络架构将成熟,全新的网络架构模式会出现在中国互联网发展的历史上。未来的博客将呈现以下发展趋势:

(1)博客成为人们普遍接受的交流平台

BBS、电子邮件、即时短信、通讯已经改变了整个未来网络走向和应用功能,博客将改变整个网络的传播面貌。它可能集所有的功能来综合应用,开发出它作为普及性交流平台的作用和功能。博客可以应用影视、图片、广播和文字等手段与技术,自由发布个性化信息的时代。它将整个改变了人类精神交流和文化传播的模式。传统的传播受到了很大的冲击,人们将要面对博客带来的深刻变化,并且会适应这种变革中所发生情景,并且逐步普遍会接受博客这样的交流平台。

(2)博客平台与移动手机传播互动技术日益成熟

3G手机的发展会带动或加快整个博客平台技术很快成熟起来。人们会利用博客平台来进行影像互动和文字短信的交流,这个既是通讯又涉及到商务活动和娱乐平台,会迅速推动整个博客与手机互动性服务模式的运行。在不久的将来,人们利用手机阅读器就可以看电影、看电视、听音乐、购物、玩游戏或传播图像和更换自己的博客。

(3)博客将推动整个传媒与出版业发生变革

自媒体的博客传播将会改变整个信息化产业结构,尤其是新闻和出版业的发展未来,将会更多的受到它们的影响和改变。人们关于媒介信息的需求更加个性化,这并不是说它彻底改变了整个出版业和新闻界,而是说多元化的社会文化需求,人们更多的偏爱独特的信息传播,或者说更多个性化的信息服务,更加具有针对性的信息传递。新闻和出版业会更多的关注或参与到博客中来,建构新闻与出版的平台,满足人们对于新闻与出版更多服务与要求。

(4)博客传播全球化必然是互联网未来选择

全球化的过程,对于互联网就是一个无国界的传播过程。博客就是适应了这种传播的需要而产生。每一个人,都可以在全球化的过程中建构一个自由发布个性化信息平台,这就是互联网给人们带来的革命性变革力量。一个开放的社会,实际上,就是一个虚拟世界中更真实的面对现实社会的选择。博客的发展是一个必然的过程,全球化的传播,也是一个能够给人们带来更多信息的社会。互动的网络社会突破了地域之间人们的阻碍,它给人们带来了更多的机会和把握未来的机遇。

从技术上来说,博客系统是基于web模式的,具有基本动态web开发技术的工具都可以进行博客开发,大多数web开发技术都是HTML嵌入式的,目前,流行的web开发技术主要有:

asp为前身,微软于2000年1l月发布了ASP.NET,并与2005年正式发布了功能更为强大、使用更为简单的ASP.NET 2.O o

(2) PFIPo PHP (HyperText Preproceor,超文本预处理器),其优势在于运行效率比一般的CGI程序要高,而且完全免费,任何人都可以从PHP官方站点( http: //www.php.net )自由下载。PHP可以跨平台运行,在大多数Unix平台,GUN/Linux和微软Windows平台上均可运行。

cs> JsPo JsP和ASP非常类似,不同之处在于①ASP编程语言是VBScript之类的脚本语言,而JSP使用的是Javao②两种语言引擎用完全不同的方式处理页面中嵌入的程序代码。在ASP下,VBScript代码被ASP引擎解释执行;在JSP下,代码被编译成Servlet并由Java虚拟机执行。 0.2 PHP 0.2.1 PHP简介

PHP是一个嵌套的缩写名称,是英文超级文本预处理语言(PHP: Hypertext Preproceor)的缩写。PHP是一种服务器端、跨平台、HTML嵌入式的脚本语言。

PHP与微软的ASP有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。

PHP独特的语法混合了C, Java, Perl以及PHP自创新的语法。它可以比CGI或者Perl更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;与同样是嵌入HTML文档的脚本语言JavaScript相比,PHP在服务器端执行,充分利用了服务器的性能;PHP执行引擎还会将用户经常访问的PHP程序驻留在内存中,其他用户在一次访问这个程序时就不需要重新编译程序了,只要直接执行内存中的代码就可以了,这也是PHP高效率的体现之一。PHP具有非常强大的功能,所有的CG工或者JavaScript的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。 0.2.2 PHP的发展

PHP从1994年秋天开始孕育,创始人是Rasrnus Lerdorfo 1995年发布了第一个公开版本Personal Home Page Tools,这个版本的功能非常简单,包含了一个极其简单的分析引擎,只能理解一些主页后台的常见功能(如:留言本、计数器等)和一些指定的宏。1995年Rasmus Lerdorf重写了这个引擎并命名为PHP/FI2.0版本。

此后,PHP/FI便以惊人的速度传播开来。其后越来越多的人们注意到了这种语言并对其扩展提出了各种建议。在许多程序员和电脑爱好者的无私奉献下以及这种语言本身的源代码自由性质,现在它已成为一种特点丰富的语言,而且现在还在成长中。

目前,最新推出的PHPS,整个脚本程序的核心大幅改动,使得PHP的Zend核心引擎性能优越,程序的执行速度更快。PHP最佳化之后的效率,已较传统CGI或者ASP等程序有更好的表现;而且还有更强的新功能、更丰富的函数库。

0.2.3 PHP的功能特点

相比其它开发技术,PHP有以下几个特点:

1、快速。PHP是一种强大的CGI脚本语言,语法混合了C, Java, Perl和PHP式的新语法,执行网页比CGI, Perl和ASP更快。

2、具有很好的开放性和可扩展性。PHP属于自由软件,其源代码完全公开,任何程序员为PHP扩展附加功能非常容易。

3、数据库支持。PHP支持多种主流与非主流的数据库,如:,Adabas D,DBA,dBase,dbm,fi lePro,Informix,InterBase、mSQL,MySQL、Microsoft SQL Server,Sol id、Sybase、ODBC、oracle、oracle

8、PostgreSQL等。

4、面向对象编程。PHP提供了类和对象。为了实现面向对象编程,PHP4及更高版本提供了新的功能和特性,包括对象重载、引用技术等。

5、具有丰富的功能。从对象式的设计、结构化的特性、数据库的处理、网络接口应用、安全编码机制等,PHP几乎涵盖了所有网站的一切功能。

6、易学好用。学习PHP的过程非常的简单。只要了解一些基本的语法和语言特色,你就可以开始进行PHP编码了。在编码过程中如果遇到了什么麻烦,可以去翻阅相关文档。 0.2.4 PHP与MYSQL “PHP开发者特别衷情于MySQL,在PHP中建立了完美的MySQL支持”。在PHP中,用来操作Mysql的函数一直是PHP的标准内置函数,PHP提供了大量的函数来对MySQL数据库进行操作,可以说,用PHP操作MySQL数据库极为简单和高效,这也使得PHP+MySQL成为当今最为流行的Web开发语言与数据库搭配之一。PHP是通过预先写好的一些列函数来与MySQL数据库进行通信,向数据库发送指令、接收返回数据等都是通过函数来完成。PHP程序与MySQL进行通信的基本原理如

图0-1 PHP程序与MySQL数据库通信原理示意图

PHP并不是直接操作数据库中的数据,而是把要执行的操作以SQL语句的形式发送给MySQL服务器,由MySQL服务器执行这些指令,并将结果返回给PHP程序。下面是Mysql与php连接流程图(图O一2):

图O一2 PHP操作MySQL数据库流程

在流程图的每一个步骤中,都有相应的函数与之对应。开发PHP数据库程序时,只需要按照流程调用相关函数,便可轻松实现数据库操作。 1.PHP环境的搭建

在设计和开发之前,我们先进行PHP服务器的环境搭建。PHP的环境搭建可以在Windows下,也可以在Linux或者其他操作系统下,它可以跟微软的IIS服务服务器配置在一起,也可以和其他服务器软件合用,在这些服务器软件中,APACHE服务器软件跟PHP搭配起来优势更大。在这里,我们选择常用的Windows系统下,安装Apache服务器软件和Mysql数据库软件实现PHP的开发环境。 1.1软件准备

本文基于APACHE+PHP+MYSQL环境下的,由于我们习惯在XP下工作,所以

配置环境在XP下进行。需要分别下载三个软件并进行配置。通过搜索,三个文件和参考下载地址依次为:

@apache 2.0.47.win32一x86.no l.msi下载参考地址:

http://archive.apache.org/dist/httpd/binaries/win32/apache_2.0.47一win32-x86·no—l.msi ②php.52 0RC4-Win32 zip下载参考地址:

http://etcnc2 skyen com/down/php一52 0RC4-Win32zip ③mysql.40 14-win far下载参考地址:

http://www.jspen net/mngtools/mysql-40 14·win rat 1.2安装配置PHP PHP是需要单独安装的,安装步骤如下:

①解压缩PHP压缩包到C:\php。

②复制C\:php目录下的php4ts叫、Iibmysql dll及C:\php\ext目录下的所有文件到windows安装目录的系统文件夹里。(win9x/me是system目录

winNT,2k/winXP,2003是system32目录) 复制C\:php\php.ini-dist到windows安装目录下(如:C:\windows),并将其改名为php.ini。用记事本打开,修改一下信息: 搜索extension_dir=./这行,将其路径指到你的PHP目录下的ext目录,比如:extension_dir=c:\php\ext:

搜索seion.save_path这行,将其路径指到存在的一个目录作为seion的临时

文件夹,使php支持seion,比如:seion.save_path=c:\tmp。修改完成后,保存php.ini,到此完成PHP的安装和配置。 l 3安装配置APACHE 安装好PHP后,就需要安装APACHE服务器软件,并且将pHI\'和APACHE服务器软件进行关联操作,让它们能一起工作。详细步骤 ①运行APACHE安装程序.按默认完成安装。 ⑦配置APACHE的httpd eonf5拊,将pHP与APACHE建立关联a找到http.conf文件,如图1—1:

图1一1编辑httpd甲conf文件

找到“DocumentRoot”参数,修改成D:\\www作为主目录。 在httpd.conf中任意位置插入以下两句代码: LoadModule php5_module \"caphp51php5apache2.d11\"

AddType application/x-httpd-php .php

PHPIniDir \"C:/WINDOWS/\"

前两段代码规定apache以模块的方式将载入PHP。最后一段代码让PHP知道到哪个目录下搜索php.ini文件。 1.4安装配置MYSQL

MYSQL也是需要单独安装的,用winzip解压缩软件,直接运行setup.exe,安装路径选择C:\\MySQL目录。安装完成后,MySQL也就完成了。默认的用户名是root,密码为空。为保证安全性,我们修改下root的密码。

C:\\ cd c:\\mysqllbin/

C:lmysql\\bin

mysqladmin -u root paword 123456 d

这样,我们就安装完成了mysql数据库,并且修改了超级用户root的密码为123456(此密码仅做测试用)。

经过三个步骤后,我们就把windows下的php环境的配置成功,为验证安装是否成功,我们进行环境测试。

打开一个文本文件,输入:<?php phpinfo};?>,可将此文件保存为test.php,将其拷贝到Apache主目录下(D:\\www),然后在地址栏中输入httpa/localhostltest.php.看到成功输出了PHP配置信息(图I-2 ),证明PHP运行成功。

2.功能设计

2.1教师博客功能设计

Blog是一个网页,通常由简短且经常更新的帖子(Post,作为动词,表示张贴的意思,作为名字,指张贴的文章)构成,这些帖子一般是按照年份和日期倒序排列的。而作为Blog的内容,它可以是你纯粹个人的想法和心得,包括你对时事新闻、国家大事的个人看法等,也可以是在基于某一主题的情况下或是在某一共同领域内由一群人集体创作的内容。它并不等同于“网络日记”。作为网络日记是带有很明显的私人性质的,而Blog则是私人性和公共性的有效结合,它绝不仅仅是纯粹个人思想的表达和日常琐事的记录,它所提供的内容可以用来进行交流和为他人提供帮助,是可以包容整个互联网的,具有极高的共享精神和价值。这样博客就形成了三大主要功能:(1)个人自由表达和出版;(2)知识过滤与积累;(3)深度交流沟通的网络新方式。

作为教师博客,就是为教师这一群体专门开发的一中博客,具有其特定的用户群和共享内容。教师博客具有的主要功能也可以归纳为:(1)文字和媒体的发表;(2)已发表内容的查询和归类;(3)交流和沟通的实现。

下面我们对教师博客和教师博客用户群进行详细的功能设计。 2.1.1教师博客用户分类

博客是面向不同用户的,根据用户的不同实现不同的功能。在开发过程中,根据不同用户功能的实现方式区分、开发和定位模块功能。

在教师博客系统中,用户可分为三大类:教师博客用户、管理用户和浏览用户。教师博客用户是博客使用的主体,大部分的信息都来自于此类用户。用户有申请博客账号、添加博客分类、修改自己博客分类、添加博客内容、修改博客内容、对自己博客进行常规管理、本博客的友情链接、首页图片(banner和站长头像)、站长的话等。

为突出教师博客特点,本系统还增加了博文分类功能,以便于教师博客用户对自己的文章有针对性的整理和分类,便于跟学生、家长,包括其他教师进行交流。管理用户是管理整个博客体统的最高用户,但是设计功能相对比较简单,就是设置博客用户的状态,以及删除用户。

浏览用户是浏览教师博客的用户。就是可以访问博客用户设置管理的博客的所有内容。在本教师博客系统中,浏览用户主要针对学生及家长。 2.2.2用户功能详细功能

教师博客系统的三大类用户组成了博客的使用者,每一类用户都拥有不同的权限和操作方式,根据用户种类的不同,实现不同的操作功能。

教师博客用户:常规设置(设置博客的页面显示属性和标题、版权等),友情链接管理(添加、编辑和删除自己的友情链接)、首页图片管理(C banner和博主形象图片)、站长的话、日志的分类(添加、编辑和修改)、日志的添加、日志的管理(编辑删除)以及安全设置。

管理用户:设置博客用户的状态、删除现有的博客用户以及安全设置。

浏览用户:根据博客用户设置的常规设置的格式来访问博客用户添加的友情链接、首页图片、站长的话、日志分类、日志的具体内容等信息。

系统功能可以用图示表示如图2-l

2.2数据存储设计 2.2.1数据存储方式

在PHP所支持的数据库中,MYSQL数据库与PHP结合是最完美和方便的,PHP+MYSQL的组合,几乎可以开发所有流行的Web应用系统。如留言本、新闻与文章管理系统、论坛、各类信息发布系统、投票程序、博客等等。而这些系统中,博客系统具有很强的代表性。随着教育信息化的不断发展,教师博客作为教师和教师、教师和学生、教师和家长的沟通方式,具有其他沟通方式不可比拟的优点。充分利用php与mysql完美结合的优势,实现教师博客系统进行应用,将对教育发展、教育信息化建设有积极的促进作用。

本系统采用MYSQL数据库和文件并存的方式来存储数据系统运行需要的数据,数据库存放博客的主体内容数据,包括博客的博客用户数据、管理用户数据、浏览用户评论数据等。

博客的页面属性,如边距、标题、版权等信息,我们采用文件操作的方式。这些文件包括纯文本文件(txt文件)、CSS样式表、PHP include文件等。 2.2.2表结构与文本存储

在mysql数据库中,存储博客主体内容数据的数据库名字为blog db,含有6个数据表,每个表存储不同用户的各种数据,这6个数据表之间的字段和关系简单描述如图2-2

本系统中的文件操作,我们是采用存储变量的方法,这样当我们使用的时候直接包含文件并使用相关变量即可,如页边距、背景颜色、友情链接、站长的话等均存放在“config”文件加中的config*.inc, link*.txt, sta sys*.txt,其中*为用户的id .比如说有一个用户申请,他的id为1,那么等用户进行基本的设置后在“config”文件加中就会多出configl.inc, linkl.txt, sta sayl.txt三个文件。 2.3系统文件结构设计 2.3.1系统文件夹

整个系统是由很多PHP文件组成的,在基于B/S结构中,服务器上的每个PHP文件实现不同的功能,根据模块化设计思想,我们按照功能模块统一对系统文件夹进行定义,系统的主文件包含主要的php文件,包括初始化文件、首页文件、博客显示页面文件等。主文件夹下有5个子文件夹,这5个文件夹根据功能来定义,分别为:

C1) config文件夹。存放注册用户属性文件,也就是数据存储设计中的数据文本,在程序运行时,从此文件文件里读出数据变量值,文件夹包含文件文件的数目是由注册用户的多少来决定的。每个注册用户的博客属性数据存放在里面的文件中。

( 3 ) manage文件夹。存放注册用户后台管理文件。在这些文件中,实现了注册用户的管理功能,包括各种用户数据的添加、删除功能实现文件等。

( 4 ) pic sys文件夹。存放系统运行中,各用户上传的个人图片和个人博客页面banner图片等。

( 5 ) super文件夹。存放超级管理员管理文件。 2.3.2文件结构表

下面用一个表来表示本文具体的文件结构,并在备注里面详细介绍了每个文件的作用。

2.4流程设计

每类用户的操作过程,都有对应的流程,为了更加清晰的表示各类用户操作的作用、目的和效果,我们就这三类用户分别设计了不同的流程。 2.4.1管理用户流程

管理用户流程包括用户管理登录、登录验证、管理操作、登录注销等步骤,详细流程如图2-3:

2.4.2浏览用户流程

浏览用户流程比较简单,他只有选择、检索、浏览博客等步骤,在浏览用户博客的过程中,还可以进行评论。具体流程图如图2-40

2.4.3注册用户流程

注册用户是博客的核心用户,实现的功能比较复杂,并且拥有博客的管理权,其流程图如图2-5:

3.数据库设计

数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,

建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。

本系统采用的数据库是mysql数据库,前文中提到了数据库设计的大体思路并给出了数据库的表结构和数据库表的关系表,下面我们就细节方面进一步细化。 3.1表结构

本文中共用到了六个表,每个表存储用户的不同数据下面我们用表格列出各个表的字段名、类型、字段意义和功能: (1) manage _info(管理用户信息数据表)

总体来说,本系统数据库的设计相对比较简单,数据表规模也不大,基本满足了系统的需求。每个表都设置了一个主键id,从图2-2来看,虽然出现了一定数据冗余,但是这种冗余是有益数据库的操作的,方便了数据的存储和更新,提供了运行效率。作为中小型数据库管理系统,MYSQL是很出色的,这种数据库需求正是MYSQL数据库擅长的中小型数据库模式,在这样的规模下,MYSQL会更有效的运行,速度也会很快,效率也会很高。 3.2文本和表的创建 3.2.1文本存储

有关数据的存储,本系统中不仅使用了数据库来存储,还用到了文件存储。文本存取数据的方法用到两种:

(1)直接存放,使用PHP程序读取、写入文本文件的内容;

(2)在文本文件中存储变量,使用PHP程序包含该文件,并且在程序中直接使用变量。 3.2.2数据库创建

数据库创建的方法也有两种:

(1)从phpmyadmin的可视化操作界面创建数据库、数据表。

(2)在dos命令提示符下创建数据库数据表,可以在mysql下用sql语句进行创建,步骤如下:

C:}nysqllbin mysql d

mysql>

①创建数据库:

Mysql> CREATE DATABASE \'blog db\';d

②创建数据表

如:创建数据表blog- comm_info:

Mysql> CREATE TABLE IF NOT EXISTS \'blog- cometjnfo\'(

\'id\' int(11) NOTNULL auto一ncrement,

\'blog id\' int(11) default\'0\',

\'comet- name\' varchar(32) NOT NULL,

\'cont\' text NOT NULL,

\'add time\' datetime default \'0000-00-00 00:00:00\',

UNIQUE KEY\'id\' (\'id\'));/

这样,我们就可以在命令符状态下创建了一个表blog comet_ info,并对表的每个字段进行了定义,使用类似语句就可以创建出所有我们需要的表了。 4.编码实现过程

在明确了需求后,我们对PHP进行了探究,接下来,我们又对博客系统分别进行了功能设计、数据库设计、文件结构设计、流程设计,下面我们来进行最繁琐也是比较重要的一步,就是编码实现过程。

为了使编码过程更加清晰、有层次、易‘懂,我们将文件依次按照类库文件、安装程序文件、注册用户文件、管理用户文件、浏览用户文件等四个相对独立的模块进行编码,并在编码中给出了必要的注释。 4.1类库文件模块

4.1.1数据库类文件核心代码。

此文件在文件夹inc下在文件mysql.php中,这里我们定义了一个数据库类mysql,对用到的数据库操作进行了封装。这样,在任何页面中都可以用include方式引入外部文件的方式进行引用。

一一一一一=inc/mysql.inc.php二一—一一一一一一

<?php

cla mysql{

///连接服务器、数据库以及执行SQL语句的类库

public $database;

public $server username;

6public $server userpaword;

function mysql()

{//构造函数初始化所要连接的数据库

$this->server username=\"root\";

$this->server userpaword=\"root\";

}llend mysql()

function link($database)

{刀连接服务器和数据库 if ($database==\"\")王

$this->database=\"newsee manage\";

}else{

$this->database=$database;

} //连接服务器和数据库

if($id=mysql_ connect(\'localhost\',$this->server username,$this->server userpaword)){ if(!mysql_ select db($this->database,$id)){ echo”数据库连接错误!!!”; exit; } }else{ echo”服务器正在维护中,请稍后重试!!!” exit;

} }//end link($database) function excu($query) {//执行SQL语句

if($result=mysql-query($query)) {

return $result;

}else{

echo mysql error();

echo \"sql语句执行错误!!!请重试!!!”;

exit;

} }//end

exec($query)

}//end cla mysql

?>

文件中使用了构析函数mysql对数据库类初始化了数据库连接的主机、用户名和密码,并把数据库查询、修改等操作作为数据库类的方法进行了封装。 4.1.2函数库类文件核心代码

此文件也在文件夹inc下,我们把各种常用的函数封装在了myfunction这个类中,放在了文件myfunction.php里。这个类没有属性,只有方法,每个方法实现了一中特定的功能,在外部引入中可以直接使用类的各种方法,从而实现系统操作的各种功能。 一一一—=inc/ myfunction.php一一一一二一一一一二

<?php

cla myfunction王

//////////////刀字符转换:向数据库中插入或更新时用IIIIIIIIIIIIIIIIIIIIIlIlII

function str_to($str)

{

$str--str- replace(\" \",\" \",$str);

//把空格替换】itml的字符串空格

$str=str一 replace(\"

$str=stree replace(\">\",\">\",$str);//把html的输出标志正常输出

$stt=n12br($str);

//把回车替换成html中的br

return $str;

} ////////////////字符转换:从数据库中读出显示在表单文本框中用////////////////I/////////

function str to2($str)

{

$str=str_replace(\" \",\" \",$str);

//把空格替换html的字符串空格

$str=stres replace(\"\",\"\",$str);//把html的输出标志正常输出

return $str;

} //JS弹出信息框

function js_ alert($meage,$url){

echo \"<script language=javascript>alert(\"\';

echo $meage;

echo \"\');location.href=\"\';

echo $url;

echo \" ;</script>\";

} //判断是否为整数

function int一 estimation($num)笼

if (eregi(\"^[0-9]+$\", $num)){

return true;

}else{

return false;

} //类型记返回类型名称

function type idto name($type id){

$folie=new mysql;

$folie->link(\"\")}

$query=\"select type- name from blog type info where id=\'$type_id\"\';

$rst=$folie->excu($query);

$info=mysql fetch_ array($rst);

return $info[\"type- name\"];

) //博客信息表中的类型id返回博客类型名称

function blog type idto_ name($type id){

$folie=new mysql;

$folie->link(\"\")}

$query=\"select*from blog type info where id=\'$type_id\"\';

$rst=$folie->excu($query);

$info=mysqlwe fetch array($rst);

return $info[\"type一 name\"];

} llll/IIIlI分页函数返回:首页上一页[1][2][…]下一页尾页//////////

function page($query,$page id,$add,$num_per page){ //// include \"mysql.inc\"; //////使用方法为: /////$my}new myfunction; ////// $query=\"\"; ////// $myf->page($query,$page id,$add,$num}er}age); ////// $bb=$aa->excu($query); $bb=new mysql; global $query;

//声明全局变量 $bb->link(\"\"); $page-id=$_ GET[page id];//接收page id if ($page- id==\"\"){

$page id=l;

} $rst=$bb->excu($query); $num=mysql一 numes rows($rst); if ($num---0){ echo”无相关记录!

}else道

$page num=ceil($num/$num_per}age); for ($i=l;$i

if ($page id==$i)笼

echo \"[$i]\";

}else{

echo \" [\".$i.\"]\";

}

}

if ($page一d==1){

$pagewe up=l;

}else{

$page- up=$pag勺d-I;

}

if ($page id==$page- num){

$page down=$page- num;

}else{

$page down=$page id+l;

)

if ($page id I ) {

echo \"下一页\".

}

if ($page id>I and $page id

echo \"上一页}};

}

echo \"  第”.$page_ id.”页,共”.$page- num”页”;

$pageyjump=$num}er-page*($page id-I);

$query=$query.\" limit $pag叼urnp,$num}er-page\";

}

}

}

?>

本文件中,我们自定义了常用的字符转换、弹出信息、分页等常用函数,在本 系统里,这些函数属于通用函数。 4.2安装程序模块

本文件在主目录下,文件名是install.php,它是数据库初始化页面,完成数据库 和表的创建功能,第一次运行本系统时,运行一次本页面程序,运行成功后就可以 把本页面文件删除掉。

——一一一一install.php一一一一一一

}}PhP

include \"inc/mysql.inc.php\";

$aa=new mysql;

$bb=new mysql;

$aa->link(\"mysql\");

$query=\"CREATE DATABASE \'blogwe db\'\";

if($aa->excu($query)) {

echo”数据库创建成功!\";

}

$bb->link(\"blog db\");

//创建表:manage user info//

$query=\"CREATE TABLE \'manage info\'(

\'id} int(11) NOT NULL auto increment,

\'manage user\' varchar(20) NOT NULL,

\'manage}rv\' varchar(32) NOT NULL,

\'last time\' datetime default\'0000-00-00 00:00:00\',

UNIQUE KEY\'id\' (\'id\')

),’;

$bb->excu($query);

echo”创建表:manage一nfo成功!-;

通过标准的SQL语句“CREATE TABLE tablename (name type......),然后借助 PHP内置的MYSQL支持函数excu (SQL),我们依次可以创建表:

// user info//

// blog_type info//

// blog info//

// blog_comm_info!/

// pic info//

接下来一步我们需要初始化管理员用户名和密码:

$query=\"INSERT INTO

\'manage- info\' VALUES(1,\'admin\',\'admin\',\'0000-00-00 00:00:00\')\";

if($bb->excu($query)){

echo”初始化管理员用户名和密码:admin,admin\";

}

echo \"OK! \";

?>

在本页面里,用了七条sql语句在mysql里创建了一个数据库blog_db,然后又分别创建了本系统用到的六个表:manage_ info,user info, blog一 type_ info,blog info, blog- comm info. pic_ info。并对每个表的每个字段进行了定义。 4.3注册用户功能模块

注册用户是本系统的主要用户,跟它有关的文件有主目录下的loginl.php文件和manage文件夹下的所有文件。

在login.php文件里,实现了注册用户的登陆和注册功能,在manage文件夹里的文件里实现了注册用户的所有管理功能,包括常规设置(general.php )、友情连接管理(link.php)、图片管理(pic_ add.php)、博主的话(sta_say.php)、日志分类(module_ add.php )、日志添加(blog_add.php, blog_ edit.php )、日志管理

(blog manage.php)、安全设置(key.php, seion.php)等功能。另外,管理界面文件为user.php,在user.php文件里,实现了动态包含文件的功能。还有一个menu.php文件是单纯的包含在user.php里面的。下面我们对每个文件的编码和功能进行分析 4.3.1登陆文件核心代码

本文件通过一个Get变量$一ET[}}register_ tag}}」标志出是用户登陆还是注册,然后用分支结构语句分别进行处理,其核心代码如下:

一—一一=loginl.php=—一—一一二

<?php

include \"inc/mysql.inc.php\";

include \"inc/myfunction.php\";

include \"inc/head.p帅,,;

$folie=new mysql;

$crazy=new myfunction;

$folie->link(\"\")}

刀接受变量

$register tag=$_ GET[\"register tag\"];

$up_register=$少OST[\"upes register\"];

$up login=$ POST[\"up login\"]; 刀验证用户登陆信息 if($up_login==1){

fuser- name=$一OST[\"user name\"];

$query=\"select*from user info where user- name=\'fuser name\' and tag--\'1”,;

$rst=$folie->excu($query);

if(mysql num- rows($rst)>=1) {

$info=mysql_ fetch array($rst);

fuser-pw=$_ POST[\"user_pw\"];

if($user}w==$info [\"user}w\"]) {

$_ SESSION[\"user name\"]一$user name;

$_ SESSION[\"user id\"]=$info[\"id\"];

$_ SESSION[\"user tag\"]=\"1”;

$today=date(\"Y m-d H:ia\");

$query=\"update

user info

set \'las甘ime\'=\'$today\'

where \'id\'= $info[idJ\"\';

//$query=\"insert

into

user info(\'user name\',\'user}w\',\'last time\') values(\'$user name\',\'$user-pw\',\'$today\')\";

$folie->excu($query);

$crazy->js alert(”登陆成功!\",\"manage/user.php\");

}else{

$crazy->js alert(”用户名或密码错误!\",\"index.php\");

}

}else{

$crazy->js alert(\'’用户名或密码错误!\",\"index.php\");

}

}

//判断用户注册信息,并写入数据库

if($up一 register=1){

fuser name=$一OST[\"user name\"J;

if($user name!=\"\"){

$query=\"select*from user info where user name=\'fuser name\"\';

$rst=$folie->excu($query);

if(mysql num rows($rst)

fuser-pwl=$ POST[\"user_pwl”];

$user}w2=$一OST[\"user}w2\"];

if($user_pwl=$user}w2 and fuser-pwl!=,,”){

$r time=date(\"Y m-d H:ia\");

$query=\"insert

into

user info(\'user name\',\'user-pw\',\'r time\') values(\'$user name\',\'$user}wl\',\'$创me\')\"}

$rst=$folie->excu($query);

if($rst) {

$crazy->js_alert(”注册成功!\",\"index.php\");

}

}else{

$crazy->js alert(\',两次输入的密码不一致,请重新输入! \",\"index.php?register tag=1 \");

}

}else{

$crazy->js alert(”用户名己存在!\",\"index.php?register tag=1 \");

}

} }

?>

width=\"752\"

border=\"0\"

cellpadding=\"0\"

cellspacing=\"0\" style=\"border-collapse:collapse\">

<?php if($register tag!=1){ ?>

叼tr>

<?php

include \"roc/foot.php\";

?> 4.3.2用户界面文件核心代码

用户界面文件user.php中包含了一个menu.php文件,它是用户操作的菜单选项并根据菜单选项传递给user.php一个操作标志,通过这个操作标志,user.php接收传递变量$_GET[\"target\"]实现了动态文件包含,从而完成了各种功能页面的包含功能,其实现代码为:

$target=$_ GET[\"target\"];

$target.=\".php\"; include $target; 文件核心代码如下: 一一一—一=manage/user.php===--_-一一一二一 <?php include \"seion.php\"; include”二/inc/mysql.inc.php\' ; include”.linclmyfunction.php\"; include\"head.php\";

$folie=new mysql; $crazy=new myfunction; $folie->link(\"\")} ?>

$target=$_ GET[\"target\"];

if{$target=\" \") {

。品。”一欢迎您登录多用户博客管理后台:一一点击右侧连 进行相关操作。一”;

}else{

$target.=\".php\";

include $target;

}

?>

width=\"257\"

align=\"center\"

valign=\"top\"><?php \"menu.php\";?>

<?php

Include\"../inc/foot.php\";

?> 4.3.3常规设置文件核心代码

常规设置是注册用户文件的一些个性化设置,其设置数据存储在文本文件中,文本文件在主文件夹下config文件夹里,每个注册用户有三个文本文件保存常规设置,分别为config*.txe,link*.txt,sta say*.txt命名。本文件中实现了文件的读写功能。其核心代码如下: 一一一=一一一=一=manage/general.php=--=二一=二—一一一

<?php

$config tag=$ GET[\"config tag\"]; $name=\"config\".$_ SESSION[\"user id\"]; if ($config_ tag==1){

刀接收变量

$margin一 top=$ POST[\"margin-top\"];

$margin bottom=$_ POST[\"margin-bottom\"];

$backgroun之color=$ POST[\"background-color\"];

$title=$一OST[\"title\"];

$copy right=$_ POST[\"copy-right\"];

//构造字符串

$str in=\"<?phpln\";

$str in.=\"global \\$confg;\\n\";

$str in.二,’//网页布局参数w,;

$str in.=\"\\$config[\'margin-top\']=1\"\".$margintop.\"\" ;\\n\";

$str in.=\"\\$config[\'margin-bottom\'〕二\"\".$margin_bottom.\"\";\\n\";

$str_in.=\"\\$config[\'background-color\']=\\‘,,,$background color.\"\";\\n\";

$str in.=\"1n\";

$str in.=\"//头信息和版权设置坷,;

$str in.=\"\\$config[\'title\']=\"\".$title.\"\";1n\";

$str in.=\"1$config[\'copy-right\']=\"\".$copy right.\"\";\\n\";

$str in.=\"1n?>\";

刀写入文件

if ($fp=fopen(\',二/config/$name.inc\", \"w\")){

fwrite($@$str in);

fclose($fp);

}

include”二//config/$name.inc\"; } @include”二/config/$name.inc\"; ?> 常规设置 4.3.4友情链接文件核心代码

本文件通过文件读写功能将友情链接数据存放在用户配置文件link*.txt里面,并实现了友情链接添加删除功能,其核心代码如下:

一一=—一—=manage/link.php一一一二=二一-=一二一一

<?php

////编辑友情链接

if ($ GET[\"edit tag\"]一1){

$name=\"link\".$_ SESSION[\"user id\"J;

if (!@$fp=fopen(\',二/configl$name.txt\",\"r\")){

echo”未创建!\"}

}else{

$linlc_name=$一 GET(\"linkto name\"];

$linkwe name Nev.$ POST[\"link name new\"];

$link-addr new=$_ POST[\"link-addr一 new\"];

@$rst=fgets($fp,3000);//读取

$link=explode(\"}\",$rst);

for ($i=0;$i

{

if ($i%2=0){

$j=$i+1;

if($link[$i]=$linkes name){

Slink[$i]=Slink-name new;

Slink[$j]=$linlc_addr new;

}

}

}

刀构造新的字符串

for ($i=0;$i

if ($i==0){

Slink-new=Slink[$i];

}else{

Slinkes new.=\"}\".Slink[$iJ;

}

刀重新写入

if ($fp=fopen(\',二/config/$name.txt\", \"w\")){

fwrite($fp,$linlc_new);

fclose($fp);

}

}

} } ///添加链接

if ($_ GET[\"add tag\"]一1){

Slinkes name- new=$_ POST[link-name- new];

Slinkra addr new=$少OST[link-addr- new];

if (Slink一 name new!=\"\" and Slink-addr new!=\"\"){

$name=\"link\".$_ SESSION[\"user id\"];

@$fp=fopen(”二//config/$name.txt\",\"r\");

@$rst=fgets($fp,3000);//读取

if ($rst---\"\"){

$rst.=Slink一 name new;

$rst.=\"}\".Slink addr new;

}else{

$rst.=\"}\".Slink name new;

$rst.\"}\".Slinkes addr new;

}

//重新写入

if ($fp=fopen(\"../config/$name.txt\", \"w\")){

fwrite($fp,$rst);

fclose($fp);

}

} } //删除连接

if ($_ GET[\"del tag\"]一I){

$linlc_name=$_ GET[\"link一 name\"];

$name=\"link\".$_ SESSION[\"user id\"];

if (!@$fp=fopen(\"../config/$name.txt\",\"r\")){

echo”未创建!\";

}else{

@$rst=fgets($fp,3000);//读取

Slink=explode(\"}\",$rst);

for ($i=0;$i

{

if ($i%2=0){

$j=$i+l;

if (Slink[$i]一$Iink name){

Slink[$i]=\"\".

Slink[[$i]=,,”;

break;

}

}

}

//构造字符串

for ($i=0;$i

{

if (Slink[$i]!=\"\"){

if ($i=0){

$str`in=Slink[$i];

} else{

$str`in.=\"}\".Slink[$i];

}

}

}

//重新写入

if ($fp=fopen(\"../config/$name.txt\", \"w\")){

fwrite($印,$str in);

fclose($fp);

}

} 35/67

56/67 6.结论与展望 6.1本文总结

本文先对当前教师博客现状和PHP开发应用现状进行了研究,接着探讨了在Windows下PHP环境的配置过程,然后对教师博客各模块进行了详细的功能设计和流程设计,接下来专门对数据库进行了设计,数据库设计完成后,我们开始进行了编码工作,最后,对整个系统进行了测试。在整个开发过程中,突出了以下几点: (1)类的应用。在编码工作中,将数据库和常用函数库分别定义了类,并对各种操作进行了封装,把代码集中到一个或两个文件中。这样就避免了在每个需要打开数据库的地方再

单独编写数据库链接代码,直接进行引用数据库类文件就可以了。同样,在需要用到常用函数的地方也可以直接引用函数库类文件。这也符合模块化编程思想,使得编码过程更加简洁、不易出错。

(2)文本存储思路。在数据存储设计中,为了系统运行速度更快,尽量减少数据库连接,本系统用到了文本进行数据存储。当一些数据量不大、不方便用数据库进行存储的数据时,适当考虑用文本来进行存储数据,这样不仅可以缩减系统,并且在存取速度上也存在一定优势。

(3)初始化文件安装方式。在一般的web开发中,都是事先直接在mysql中进行数据库定义,然后再进行开发,这样做最大的缺点是不便于移植到另一个系统中,容易造成数据混乱,并且不便于操作,也不方便记忆。初始化文件安装方式,使得本来可移植性强的PHP程序,可以连同数据库表定义移植到其他系统,并且简化了操作。

(4) PHP的seion验证机制应用。在编码过程中,用到了PHP的seion机制来对用户进行验证。合理利用seion的验证机制,可以确认每个登陆者的不同身份,从而进行有针对性的操作,是每个系统必须具备的,但是PHP的seion的验证机制相对来说更加安全、简单,实现起来也很方便。

(5)动态页面文件包含。在注册用户管理功能模块的user.php文件里,实现了用变量值作为包含文件名的功能,根据页面传递变量值的不同,动态包含以变量值命名的包含文件,简化了编程步骤,减少了编程工作量。

本系统实现过程中,也存在着很多不足,主要表现在功能过少、界面设计过于简洁、有些代码比较繁琐等。 6.2 PHP前景展望

通过以上应用,我们可以看到,PHP在这种中小型应用是非常有优势的,主要表现在:

(1)开放源码。PHP开发源码使得全球的PHPer们都可以参与到PHP的开发和测试中,PHP的每个漏洞得到及时改进和解决。另外,开发源码的低成本也使得PHP的广泛流行,在当前中小型web应用中,PHP所占的比例也越来越大。

(2)与MYSQL的完美组合。我们可以看到,PHP提供了对mysql的强大支持,仅仅通过几个函数,我们就可以进行对数据进行查询、修改等操作。PHP对MYSQL这种方便、简单的数据库操作,使得PHP+MYSQL的应用越来越流行。

(3)简单易学的语法。PHP的语法跟C语言很相似,但是又比C语言简单、好掌握,初学者不用花费很大的代价就可以用PHP编出一般的web应用系统。

当然,PHP还有很多特性和优点,我们在前面也介绍过。但是由于PHP本身存在的一些缺点,使得它不适合应用于大型电子商务站点,而更适合一些小型的商业站点。这主要表现在:

(1)PHP缺乏规模支持。PHP缺乏多层结构支持,对于大负荷站点,解决方法只有一个:分布计算,数据库、应用逻辑层、表示逻辑层彼此分开,而且同层也可以根据流量分开,组成二维阵列。而PHP则缺乏这种支持。

(2)虽然PHP提供了对mysql的完美支持,mysql是一个快速,易用的数据库,但在系统稳定性和强健性上还不能和oracle等大型数据库相比,并且mysql不支持事务处理。另外,PHP提供的其他数据库接口支持不统一,这就使得它不适合运用在电子商务中,更不适合应用在企业的关键应用中。

( 3) PHP作为一门Web编程语言,并不是纯粹的面向对象型编程语言。PHP对类重载的支持并不理想。甚至可以说PHP根本不支持真正的重载。因为PHP不允许一个类中出现两个同名的变量或者同名的方法,否则会报错。在大型应用中,面向对象编程会有很大优势。

可见,PHP是一种简单的,解释型的,健壮的,安全的,性能非常高的,独立于架构

的,可移植的,动态的脚本语言。它可跟mysql紧密的结合在一起,在中小型应用中有其它web编程语言不可比拟的优点,利用PHP+mysql开发中小型应用会使开发工作变得更加简单、高效,但是在大型的关键性应用上有所不足。相信随着PHP应用的快速发展,不久的将来,这些缺陷将会得到有效解决,PHP会迅速变成一种标准的,多用途的,面向对象的脚本语言。

创业博客系统

校园博客系统

博客系统文献综述

教师工作总结,博客

教师博客心得体会

个人博客总结系统项目总结

博客系统需求分析报告

个人博客系统需求分析

个人博客系统可行性分析

个人博客系统毕业设计论文

《教师博客系统.doc》
教师博客系统
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文