日照职业技术学院毕业设计(论文)
php留言板系统
学生姓名 院 部
电子信息科学与工程学院 专 业 计算机应用技术 指导老师 鲁 红 日 期 2015-05-19
目录
一 留言板简介 ..........................................................................................................................................4 二 留言板设计原理 ..................................................................................................................................4 三 四 五 PHP技术介绍 ...................................................................................................................................4 PHP技术优点 ...................................................................................................................................4 MYSQL介绍 ......................................................................................................................................6
六 留言板系统的概要设计 ......................................................................................................................6 (一) 系统开发环境 ...............................................................................................................................6 (二) php语言选择 ...............................................................................................................................6 (三) 系统功能 .......................................................................................................................................7 七 留言板详细设计 ..................................................................................................................................7 (一) 数据库设计 ...................................................................................................................................8 (二) 留言板数据库连接 写入和保存 ..................................................................................................9 (三) 留言板文件夹中文件的介绍 .....................................................................................................15 (四) 留言板首页设计 .........................................................................................................................15 八 总结 ....................................................................................................................................................15 九 留言板特色和不足 ............................................................................................................................15 参考文献: ................................................................................................................................................16
第1页
留言板系统
摘要:随着Internet的发展,网站的作用越来越重要,被称之为继广播、报纸、杂志、电视后的
第五种媒体——数字媒体,拥有众多优势,所以现在不少企业都有或正在建设自己的网站。而留言板作为网站重要的一个部分,从来就是一个大家交流的平台!留言板是一种最为简单的BBS应用,借助留言板,浏览者可以张贴留言的方式给站长、版主或其他浏览者进行留言和提问。
本文主要介绍留言板系统的设计思路和制作过程,从留言板的重要性开始,介绍我的留言版采用的PHP技术和MYSQL数据库,进而阐述整个留言板系统的制作过程和具体的设计思路。该留言板较全面地利用PHP技术实现留言板的基本功能:留言、查看、删除,并增加了一些特色功能。最后介绍自己在设计过程的心得体会。 关键词:留言板,PHP,MYSOL数据库
第2页
引言
Internet起源于20世纪60年代末、70年代初,当时,美国国防部为了将充斥于军事基地内各种厂商的电脑主机互连,让它们可以进行数据交换以便研究工作顺利进行,于是成立了ARPA网络计划。ARPA计划尝试建设1个网络系统,它可将各种不同厂商的电脑连接起来。随着这个计划的成功,各学术单位,研究机构也纷纷与ARPA计划所建立的ARPANet连接。到了20世纪80年代,Internet这个名词因势产生,它代表着这10年来所构建涵盖全球各地的网络系统。从1990年起,商业使用的Internet在美国急速地扩大,而Internet也从原来属于少数人使用的网络系统转变为普通百姓也能够使用的网络系统。
最初的Internet资源服务都还停留在文本模式,1989年,量子物理实验室(CERN)下的1个研究小组着手开发1种全新的Internet服务,它可以在网络上传送图片、文本、影像、声音等多媒体数据。于是由Tim Berners Lee领导的小组开发出了1种主从、分布式的网络服务系统,这就是WWW,俗称“万维网”。
所谓WWW其实就是连上Web服务器访问资源,取得的内容就是所谓的“主页”(HomePage)。进入的网页通常不会只有1页,而是整个网站的内容。
“网站”是1种呈现在网络上的新兴媒体,通过Internet已经成为1个实时的,多媒体的信息传播渠道。它的载体主要是电脑,范围覆盖全球各地,没有国界,不分人种,时时刻刻地提供服务。目前,人们渐渐开始把网站称之为广播、电视、报刊以外的第4新闻媒体,以“共享、公平、公正、创新、国际化、团队精神”为特征的网络文明也已逐渐成为这个时代的标志,人们越来越习惯于通过Internet网络获取信息,通过Internet在网站上发表自已对社会对生活的理解和建议留言板在一个网站具有很重要的地位,随着上网的普及,留言板已经不是什么新鲜事物了。本文主要介绍了用PHP技术和MYSQL技术来创建留言板的整个过程和代码的设计!本留言板更注重安全和与网站融合,但也有自己独特之处。相信通过本文的介绍,很快就学会了留言板的制作。
第3页
一 留言板简介
留言板是一种电子便签管理系统,是用PHP或其它脚本语言编写的网络应用程序。在网络用户交流中起很大的作用,每个人都可以将他的资料和要求等信息保留在页面上,以供他人观看。留言板供其他网友给自己留言,或者临时存放自己的感受。留言操作相对简单,在您进入网站后,进入任何一个留言板或社区均可以看到有输入框,输入后提交即可。留言板提供完备的信息发布功能,在网络用户交流中也有很大的作用。
而我的这个留言板仅仅是简单的留言和管理员对留言板进行设置和进行回复、删除管理的工具。该留言板简单但实用,而且具备了大多数留言板的基本功能。十分适合于中小型网站使用。
二 留言板设计原理
该留言板的整体设计遵循软件工程的方法,经过技术分析、总体设计、详细设计等。而首先就应该进行技术可行性分析并选择适当的技术。 由于PHP技术发展已经比较成熟,而且使用人数也相当多,所以该系统主要采用PHP、MYSQL技术。下面就对这两种技术做一个概述。
三 PHP技术介绍
Personal home page 即我们所称的PHP,其实是一套微软开发的服务器端脚本环境。Personalhome page 是创建动态网页的一个很好的工具,它起一种编程语言的作用,可以利用它编写动态产生HTML的程序代码。而且PHP也是服务器端脚本环境,可以用来创建交互式WEB页并建立强大的的Web应用程序。 因此,只要用户浏览Web站点并请求一个PHP页,Web服务器就可以处理相应的PHP代码,生成HTML代码,然后将它传递到用户浏览器并显示出网页。PHP内含于IIS4.0和5.0之中,通过PHP我们可以结合HTML网页、PHP指令和ActiveX元件建立动态、交互且高效的WEB服务器应用程序。有了PHP就不必担心客户的浏览器是否能运行所编写的代码,因为所有的程序都将在服务器端执行,包括所有嵌在普通HTML中的脚本程序。当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度。
四 PHP技术优点
作为网络上十分流行的编程语言,一定会具有很多独特之处,而PHP也不例外,它具有以下优点:
1、编写程序方便。您可以用 VBScript 或JScript创建脚本,同时结合HTML语言就
第4页
能够非常方便地完成网站的应用程序。对于 VBScript和JScript,使用哪种语言并不重要,Web 服务器等同地处理这两种语言,并向用户的浏览器发送 HTML 格式化结果。由于PHP采用Script语言,就可以轻松编写程序,因此这就大大节省了网络设计人员又得重新学习一种新语言的时间。而且编写PHP无须手工compile编译或链接程序,可在服务器端直接执行,这无疑是更加方便了我们的编写过程。
2、使用编程环境方便简单。可以使用普通的记事本之类的文本编辑器,即可进行编辑设计,如:Windows的记事本、FrontPage等文本编辑器。也可以用dreamweaver和专业的Microsoft Visual InterDev开发工具。
3、浏览网页方便,交互速度也快。PHP是运行在服务器端,所以我们无须担心浏览器是否支持PHP所使用的编程语言,用户端只要使用可执行HTML码的浏览器,即可浏览Personal home pages所设计的网页内容。PHP在服务器端运行,当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度。
4、提供多种编程语言。PHP能与任何ActiveX scripting语言相容。除了可用VBScript或JScript语言来设计外,还通过plug-in的方式,使用由第三方所提供的其他脚本语言,譬如Perl等。
5、提高代码的安全性。Personal home pages的程序代码隐藏,已编码的脚本在运行时由脚本引擎解码,因此不需要单独的应用程序。客户端上仅可以看到由PHP输出的动态HTML文件。因而可以避免所写的源程序被他人剽窃,也提高了程序的安全性。
6、功能强大。编程是面向对象的(Object oriented),并可扩展ActiveX Server组件功能。Personal home page Components(ActiveX服务器组件)具有无限可扩充性。你可以使用任何编程语言来编写你所需要的Personal Server 组件。可以使用Visual Basic 、Java 、Visual C++ 、COBOL等编程语言来编写你所需要的Personal Server Component。也可以使用第三方组件或自己开发的Personal Server组件。理论上说,可以实现任何功能。
7、访问数据库十分方便。可以通过PDO(Personal Data Objects,微软的一种新的数据访问模型,是一种可以提供WEB页面开发者轻松存取Internet的数据库,并可以在用户端实现网上立即、即时更新显示的最新WEB页面数据库技术。)非常方便地访问数据库。
总之,PHP从字面上说,包含三方面含义: 1.Personal:PHP使用了微软的Personal技术。Personal(COM)技术是现在Microsoft软件的重要基础。它采用封装对象,程序调用对象的技术,简化编程,加强程序间合作。PHP本身封装了一些基本组件和常用组件,有很多公司也开发了很多实用组件。只要你可以在服务器上安装这些组件,通过访问组件,你就可以快速、简易地建立自己的WEB应用。
2.home:PHP运行在服务器端。这样就不必担心浏览器是否支持PHP所使用的编程语言。PHP的编程语言可以是VBSCRIPT和JSCRIPT。VBSCRIPT是VB的一个简集,会VB的人可以很方便的快速上手。然而NETscape浏览器不支持客户端的VBSCRIPT,所以最好不要在客户端使用VBSCRIPT。而在服务器端,则无需考虑浏览器的支持问题。NETscape浏览器也可以正常显示PHP页面。
3.page:PHP返回标准的HTML页面,可以正常地在常用的浏览器中显示。浏览者查看页面源文件时,看到的是PHP生成的HTML代码,而不是PHP程序代码。这样就可以防止别人抄袭程序。由此可以看出,PHP是在IIS下开发WEB应用的一种简单、方便的编程工具。在了解了VBSCRIPT的基本语法后,只需要清楚各个组件的用途、属性、方法,就可以轻松编写出自己的PHP系统。
第5页
而我这次所开发的留言本系统,主要是利用PHP技术的简单和实用的特点,以及PHP使用的广泛性,而且非常适合于网络中小型系统开发。
五 MYSQL介绍
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008 年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购.对于Mysql的前途,没有任何人抱乐观的态度.目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
1.使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性 2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统
3.为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
4.支持多线程,充分利用CPU资源
5.优化的SQL查询算法,有效地提高查询速度
6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2
312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名
7.提供TCP/IP、ODBC和JDBC等多种数据库连接途径 8.提供用于管理、检查、优化数据库操作的管理工具 9.可以处理拥有上千万条记录的大型数据库
六 留言板系统的概要设计
(一) 系统开发环境
基于微软平台PHP环境,使用MYSQL数据库。适用于IE8.0以上版本浏览器, Win2000+APACHE 或win7+APACHE以上运行环境。(本人用的win7+APACHE测试)。
(二) php语言选择
选择一个好的编程语言十分的重要,当前,面对众多的编程语言,很多人无从选择,而本人看到PHP的以上众多特点,个人认为:
MYSQL后台数据库+PHP服务器端程序+客户端IE浏览器,是一个精练实用高效的组合模式。在这种使用模式中,PHP程序无疑是最重要的,是沟通客户端和后台数据库之间的桥梁。在PHP程序中,通过数据库语言,建立对MYSQL数据库的连接,是客户能够访问后
第6页
台数据库的前提。
鉴于前面介绍PHP优点的原因,又有上面组合的优势,本人的留言板使用PHP语言也是十分正确而实用的。
(三) 系统功能
该留言板具有的主要功能如下:
1.可以按照发言时间的先后顺序,留言板自动排序; 2.留言板的主要栏目组成图
3.本留言板不需注册,陌生人即可留言。
4.因为是个人留言板所以具有留言、查看、删除的功能。
七 留言板详细设计
有了技术和流程图以及留言板要实现的功能,接下来就应该进行详细设计了。数据库是首当其冲的,接下来就是用户常接触的首页的设计,然后就是该留言板特色功能的设计和实现。
第7页
(一) 数据库设计
我的数据库采用的是MY SQL数据库,采用的原因也已经介绍了。以下就介绍留言板数据库的组成。
第8页
(二) 留言板数据库连接 写入和保存
<?php $con=mysql_connect(\"127.0.0.1\",\"root\",\"123456\"); if (!$con) {echo\"数据库链接失败!
\";
exit();} mysql_select_db(\"gbook\", $con); mysql_query(\"set names \'gb2312\'\"); date_default_timezone_set(PRC); ?> <?php error_reporting(E_ERROR | E_WARNING | E_PARSE); set_magic_quotes_runtime(0); define(\'LOVE_ROOT\', substr(dirname(__FILE__), 0, -8).\'/\'); require_once LOVE_ROOT.\'./include/global.func.php\';
第9页
if (iet($_REQUEST[\'GLOBALS\']) OR iet($_FILES[\'GLOBALS\'])) { exit(\'Request tainting attempted.\'); } //Seion保存路径
$seSavePath = LOVE_ROOT.\"data/seions/\"; if(is_writeable($seSavePath) && is_readable($seSavePath)) { seion_save_path($seSavePath); } date_default_timezone_set (Singapore); $timestamp = time(); require_once LOVE_ROOT.\'./data/config.inc.php\'; require_once LOVE_ROOT.\'./data/db.inc.php\'; require_once LOVE_ROOT.\'./include/db_mysql.cla.php\'; require_once LOVE_ROOT.\'./include/template.cla.php\'; if(defined(\'UC_KG\')) {include_once TM_ROOT.\'/uc_client/client.php\';} $PHP_SELF = $_SERVER[\'PHP_SELF\'] ? $_SERVER[\'PHP_SELF\'] : $_SERVER[\'SCRIPT_NAME\']; $SCRIPT_FILENAME = str_replace(\'\\\', \'/\', ($_SERVER[\'PATH_TRANSLATED\'] ? $_SERVER[\'PATH_TRANSLATED\'] : $_SERVER[\'SCRIPT_FILENAME\'])); //$homeurl = \'http://\'.$_SERVER[\'HTTP_HOST\'].preg_replace(\"//+(api|archiver|wap)?/*$/i\", \'\', substr($PHP_SELF, 0, strrpos($PHP_SELF, \'/\'))).\'/\';
//实例化数据库操作 $db = new dbstuff; $db->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect); unset($dbhost, $dbuser, $dbpw, $dbname, $pconnect); $db->query(\"set names gbk\"); if(getenv(\'HTTP_CLIENT_IP\') && strcasecmp(getenv(\'HTTP_CLIENT_IP\'), \'unknown\')) { $onlineip = getenv(\'HTTP_CLIENT_IP\'); } elseif(getenv(\'HTTP_X_FORWARDED_FOR\') && strcasecmp(getenv(\'HTTP_X_FORWARDED_FOR\'), \'unknown\')) { $onlineip = getenv(\'HTTP_X_FORWARDED_FOR\'); } elseif(getenv(\'REMOTE_ADDR\') && strcasecmp(getenv(\'REMOTE_ADDR\'), \'unknown\')) { $onlineip = getenv(\'REMOTE_ADDR\'); } elseif(iet($_SERVER[\'REMOTE_ADDR\']) && $_SERVER[\'REMOTE_ADDR\'] && strcasecmp($_SERVER[\'REMOTE_ADDR\'], \'unknown\')) { $onlineip = $_SERVER[\'REMOTE_ADDR\']; }
preg_match(\"/[\\d\\.]{7,15}/\", $onlineip, $onlineipmatches); $onlineip = $onlineipmatches[0] ? $onlineipmatches[0] : \'unknown\'; unset($onlineipmatches); ?> <?php cla dbstuff {
第10页
var $querynum = 0; var $link; var $histories;
var $dbhost; var $dbuser; var $dbpw; var $dbcharset; var $pconnect; var $tablepre; var $time;
var $goneaway = 5;
function connect($dbhost, $dbuser, $dbpw, $dbname = \'\', $dbcharset = \'\', $pconnect = 0, $tablepre=\'\', $time = 0) {
$this->dbhost = $dbhost;
$this->dbuser = $dbuser;
$this->dbpw = $dbpw;
$this->dbname = $dbname;
$this->dbcharset = $dbcharset;
$this->pconnect = $pconnect;
$this->tablepre = $tablepre;
$this->time = $time;
if($pconnect) {
if(!$this->link = mysql_pconnect($dbhost, $dbuser, $dbpw)) {
$this->halt(\'Can not connect to MySQL server\');
}
} else {
if(!$this->link = mysql_connect($dbhost, $dbuser, $dbpw)) {
$this->halt(\'Can not connect to MySQL server\');
}
}
if($this->version() > \'4.1\') {
if($dbcharset) {
mysql_query(\"SET character_set_connection=\".$dbcharset.\", character_set_results=\".$dbcharset.\", character_set_client=binary\", $this->link);
}
if($this->version() > \'5.0.1\') {
mysql_query(\"SET sql_mode=\'\'\", $this->link);
}
第11页
} } if($dbname) { mysql_select_db($dbname, $this->link); } function fetch_array($query, $result_type = MYSQL_ASSOC) {
return mysql_fetch_array($query, $result_type); }
function result_first($sql) {
$query = $this->query($sql);
return $this->result($query, 0); }
function fetch_first($sql) {
$query = $this->query($sql);
return $this->fetch_array($query); } function fetch_row($query) {
$query = mysql_fetch_row($query);
return $query; } function fetch_fields($query) {
return mysql_fetch_field($query); } function fetch_rows( $sql ) {
$result = $this->query( $sql );
$arr = array( );
while ( $row = $this->fetch_array($result))
{
$arr[] = $row;
}
$this->free_result( $result );
return $arr; } function fetch_one( $sql ) {
$rs = $this->query( $sql );
$arr = $this->fetch_array($rs,MYSQL_NUM); $this->free_result( $rs );
第12页
return $arr[0]; } function fetch_all($sql, $id = \'\') {
$arr = array();
$query = $this->query($sql);
while($data = $this->fetch_array($query)) {
$id ? $arr[$data[$id]] = $data : $arr[] = $data;
}
return $arr; }
function cache_gc() {
$this->query(\"DELETE FROM {$this->tablepre}sqlcaches WHERE expirytime\"); }
function query($sql, $type = \'\', $cachetime = FALSE) {
$func = $type == \'UNBUFFERED\' && @function_exists(\'mysql_unbuffered_query\') \'mysql_unbuffered_query\' : \'mysql_query\';
if(!($query = $func($sql, $this->link)) && $type != \'SILENT\') {
$this->halt(\'MySQL Query Error\', $sql);
}
$this->querynum++;
$this->histories[] = $sql;
return $query; }
function affected_rows() {
return mysql_affected_rows($this->link); }
function error() {
return (($this->link) ? mysql_error($this->link) : mysql_error()); }
function errno() {
return intval(($this->link) ? mysql_errno($this->link) : mysql_errno()); }
function result($query, $row) {
$query = @mysql_result($query, $row);
return $query; }
function num_rows($query) {
第13页
?
$query = mysql_num_rows($query);
return $query; }
function num_fields($query) {
return mysql_num_fields($query); }
function free_result($query) {
return mysql_free_result($query); }
function insert_id() {
return ($id = mysql_insert_id($this->link)) >= 0 ? $id : $this->result($this->query(\"SELECT last_insert_id()\"), 0); }
function version() {
return mysql_get_server_info($this->link); }
function close() {
return mysql_close($this->link); }
function halt($meage = \'\', $sql = \'\') {
$error = mysql_error();
$errorno = mysql_errno();
if($errorno == 2006 && $this->goneaway-- > 0) {
$this->connect($this->dbhost, $this->dbuser, $this->dbpw, $this->dbname, $this->dbcharset, $this->pconnect, $this->tablepre, $this->time);
$this->query($sql);
} else {
$s = \'Error:\'.$error.\'\';
$s .= \'Errno:\'.$errorno.\'\';
$s .= \'SQL::\'.$sql;
exit($s);
} } } ?>
第14页
(三) 留言板文件夹中文件的介绍
有了数据库,就应该设计留言板的各个页面。本留言板由2个文件夹,11个文件组成,简单介绍各文件的作用:
index.PHP:留言板主页,主要功能是查看留言,任何人都可以查看留言信息。 Fun.php连接数据库并统计留言条数、计算页数 Config.php连接配置数据库。
(四) 留言板首页设计
我留言板的首页文件index.PHP,功能主要是为访客留下相关的信息,并进行留言,。界面相对简单,但功能很实用!留言板的基本功能实现具体如下:
图7.1留言首页
图7.2愿望
图7.3愿望列表
结束语:通过上面的介绍,相信对该留言板整体的构建和各项功能都有了一定的认识,最重要的是学会了留言板的设计以及类似网络的编程,更对实际操作和具体设计流程有了清晰的认识。该留言板实现了基本功能,并具有自己的特色,例如屏蔽关键字和防灌水功能。由于该留言板功能实用,而且界面友好,特别适合于中小型网站使用。对于刚刚接触网络编程人员的信心和兴趣也会有很大提高。
八 总结
通过本次毕业设计,我学到了很多东西,例如:编程规范,PHP技术等。这次毕业设计是对我大学本科四年所学知识的一次综合应用,让我认识到了自己的不足,并不断的加强改进。在系统不断的完善改进中,我学到了很多新的知识,也懂得了很多。这使我对自己的未来充满了信心。
九 留言板特色和不足
特色:任何人都可以留言,任何人都可以看到。无需注册和登录,完全开放。 不足:管理员功能较弱。
第15页
参考文献:
1.《PHP语言,进阶和高级应用》 龙浩等编著 清华大学出版社
2.《PHP & MYSQL Web数据库应用开发指南》 Hugh E.Williams等著 谢君英 欧阳宇译2003年5月
3.《php程序设计》 Programming PHP 中国电力出版社 2003年7月 4.《php\\mysql数据库开发指南》焦桐顺著 电子工业出版社 2001年9月 5.《php4交互网页数据库实战手册》清华大学出版社 2004年7月
第16页