2.4 公共模块设计
2.4.1 数据库连接文件
在进行程序开发的过程中,有很多地方涉及数据库的应用。在应用数据库之前,首先要与数据库建立连接。因此可以将数据库的连接代码作为一个公共文件进行存储,在需要使用数据库连接文件的地方直接调用该文件即可。这样无须重复编写相同的代码,既可减少代码的冗余,也便于对数据库连接文件进行修改。在本项目中将数据库的连接代码存储于根目录下conn文件夹的conn.php文件中。
代码位置:光盘\MR\02\conn\conn.php
<?php $conn=mysql_connect("localhost","root","111"); //连接数据库服务器 mysql_select_db("db_guestbook",$conn); //连接指定的数据库 //对数据库中的编码格式进行转化,避免出现中文乱码 mysql_query("set names gb2312"); ?>
由于本机的MySQL服务器的用户名为root,密码为111。当读者运行本程序时,需要在conn.php文件中对MySQL服务器的用户名和密码进行修改,以保证程序的正常运行。
成功创建数据库conn.php文件后,如果某个页面中需要进行数据库的操作,在页面中直接通过include语句包含conn.php文件即可。其代码如下:
<?php include("conn/conn.php"); ?>
2.4.2 将文本中的字符转换为HTML标识符
在输出数据库中数据的过程中,有必要将数据中的一些特殊字符转换为HTML标识符,这样可以避免一些不必要的麻烦。例如,在输出一个程序的执行代码的过程中,如果不对其进行转换,那么输出的将不是程序的代码,而是程序的执行结果。这里将文本中字符的转换编写到一个自定义函数unhtml()中,保存于function.php中,将其作为一个公共模块来使用,当需要使用时直接调用function.php文件即可。
function.php文件包含两个自定义函数:unhtml()函数和msubstr()函数。unhtml()函数用于将数据中的特殊字符转换为HTML标识符;msubstr()函数用于对字符串进行指定长度的截取。具体代码如下:
代码位置:光盘\MR\02\function.php
<?php function unhtml($content) { //定义自定义函数的名称 ❶ $content=htmlspecialchars($content); //转换文本中的特殊字符 ❷ $content=str_replace("@","",$content); //替换文本中的换行符 ❸ return trim($content); //删除文本中首尾的空格 } //定义一个用于截取一段字符串的函数msubstr() //$str指的是字符串,$start指的是字符串的起始位置,$len指的是长度 function msubstr($str,$start,$len) { //用$strlen存储字符串的总长度(从字符串的起始位置到字符串的总长度) $strlen=$start+$len; $tmpstr=""; //声明一个变量,并赋值为空 for($i=0;$i<$strlen;$i++) { //通过for循环语句,循环读取字符串 //如果字符串首个字节的ASCII序数值大于0xa0,则表示汉字 if(ord(substr($str,$i,1))>0xa0) { //每次取出两位字符赋给变量$tmpstr,即等于一个汉字 $tmpstr.=substr($str,$i,2); $i++; //变量自加1 } else //如果不是汉字,则每次取出一位字符赋给变量$tmpstr ❹ $tmpstr.=substr($str,$i,1); } return $tmpstr; //输出字符串 } ?>
关键代码解析
❶htmlspecialchars():将特殊字符转换成HTML格式,而不会将所有字符都转换成HTML。
❷str_replace():将所有在参数subject中出现的search以参数replace替换,参数&count表示替换字符串执行的次数。
❸trim():删除字符串中首尾的空白或者其他字符。
❹substr():从指定的字符串中按照指定的位置截取一定长度的字符。
2.4.3 JavaScript脚本
在留言本中,JavaScript脚本一般用于表单元素验证,如判断text文本框输入是否为空、输入格式是否符合标准等。在网页中使用JavaScript脚本的方式主要有3种方式。
1.在网页中使用<script></script >标签对
<script></script >标签对可以放在网页的任意位置,一般是放在<head></head>或<body></body>之间。输出系统当前时间的JavaScript脚本代码如下:
<script language=JavaScript> today=new Date(); function initArray(){ this.length=initArray.arguments.length for(var i=0;i<this.length;i++) this[i+1]=initArray.arguments[i] } var d=new initArray( "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"); document.write( "<font color=#000000 style='font-size:9pt;font-family: 宋体'> ", today.getYear(),"年", today.getMonth()+1,"月", today.getDate(),"日", " ", d[today.getDay()+1], "</font>" ); </script>
2.在单独文件中使用
如果JavaScript脚本比较多,而且位置分散不易管理,可以统一放到一个扩展名为js的文件中,使该文件成为JavaScript脚本文件。在脚本文件中,不需要使用<script></script>标签对,直接写脚本代码即可。当页面需要使用到里面的JavaScript脚本时,可以这样引用,代码如下:
<SCRIPT src="calendar.js"></SCRIPT> <SCRIPT lnguage="Javascript"> var xhnetCalendar=new calendar("xhnetCalendar","xhnetCal"); </SCRIPT> <SCRIPT> xhnetCalendar.channel='forum';</SCRIPT> <DIV class=calendar id=abc> <SCRIPT> document.write(xhnetCalendar.generate(null)); xhnetCalendar.focusDate(); </SCRIPT>
说明
本留言本主页上的万年历就是采用这种方式引用的。万年历的主要代码请参见光盘的calendar.js文件。
3.在表单元素或标签中使用
这是最直接的使用方式,如果是少量的脚本则可以这样使用。例如,在超链接标签<a>中想要使用JavaScript脚本,代码格式如下:
<a href="reply.php?t_id=<?php echo $_GET['l_id']; ?>&loor=<?php echo $i;?>"> 回复</a>
在留言本中,这3种方法都会使用到,在后面涉及具体应用时再进行说明。