实战突击
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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(),"日",
            "&nbsp;&nbsp;",
              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种方法都会使用到,在后面涉及具体应用时再进行说明。