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

2.7 添加留言模块设计

2.7.1 添加留言模块概述

当用户登录后,单击首页上的“发表留言”超链接,将加载发表留言表单。用户填写完留言标题、留言内容后,单击“发表”按钮,跳转到留言处理页进行处理。用户添加的留言将会保存到MySQL数据库中。添加留言界面如图2.13所示。

图2.13 用户添加留言的运行结果

2.7.2 mysql_query()函数执行SQL语句

将用户发表的留言保存到MySQL数据库是通过SQL语言的insert语句实现的。PHP通过mysql_query()函数向MySQL数据库中发送SQL命令,所以mysql_query()函数在数据库编程过程中具有极其重要的作用,下面对该函数进行介绍。

mysql_query()函数用于向与指定的连接标识符所关联的数据库服务器中发送一条查询语句。其语法如下。

        resource mysql_query (string query [, resource link_identifier])

参数说明如下。

query:必选参数。用于指定向数据库中发送的查询语句。

link_identifier:可选参数。mysql_connect()函数成功连接数据库后所返回的连接标识,如果省略了该参数,则使用最近一次与数据库建立连接后所返回的连接标识。

2.7.3 添加留言模块实现过程

添加留言模块,首先应建立用于留言的表单。该过程实现相对简单,这里不再赘述。

然后,获取表单中提交的数据,对用户输入的留言信息进行敏感词过滤,将用户留言内容保存到数据库中。具体代码如下:

代码位置:光盘\MR\02\ saveleaveword.php

        <?php
        session_start();                      //启用SESSION支持
        include_once("conn/conn.php");        //包含数据库连接文件
        include_once("function.php");         //包含系统功能文件
        if(isset($_SESSION["unc"])){          //对登录用户进行判断
        //查询当前用户数据表中的信息
        $sql=mysql_query("select id from tb_user where usernc='".$_SESSION["unc"]."'");
        $info=mysql_fetch_array($sql);        //从结果集中获取信息
        $userid=$info['id'];                  //获取用户的ID
        }
        if(isset($_SESSION['userword'])){
        $sql=mysql_query("select id from tb_adm where userword='".$_SESSION["userword"]."'");
        $info=mysql_fetch_array($sql);
        $userid=$info['id'];
        }
        if(isset($_POST['content'])){
                  //判断给定文件名是否为一个正常的文件
        ❶       if (is_file("filterwords.txt")){
              $filter_word = file("filterwords.txt");  //把整个文件读入一个数组中
              $content=$_POST['content'];
              $title=$_POST['title'];
              for($i=0;$i<count($filter_word);$i++){   //应用for循环语句对敏感词进行判断
                        //应用正则表达式,判断传递的留言信息中是否含有敏感词
        ❷         if(preg_match("/".trim($filter_word[$i])."/i",$content)){
                        echo "<script>alert('留言信息中包含敏感词!');history.
                        back(-1);</script>";
                        exit;
              }
            }
        }
        ❸      $createtime=date("Y-m-d H:i:s");//获取留言时间
            //在页面中提交的留言信息,写入数据库留言表中,提示留言成功并跳转到查看留言
              if(mysql_query("insert into tb_leaveword(userid,createtime,title,
              content)values('$userid','$createtime','$title','$content')")){
              echo "<script>alert('留言发表成功!');window.location.href='index.php?id=
              ".urlencode('查看留言')."';</script>";
        }else{
            echo "<script>alert('留言发表失败!');history.back();</script>";
        }
        }
        ?>

关键代码解析

❶is_file()函数:判断该函数参数所表示的文件是否存在并且为一个合法文件。

❷ preg_match()函数:preg_match()函数中的“/i”,是指在进行敏感词汇比较时区分字母大小写。

❸date()函数:格式化一个本地时间/日期。