今天上午自己正事没有干,倒是用php写了一个小的在线留言板,然后时间也比较紧迫,这里面就有一个站内搜索的小技术,感觉实际上也比较简单,但是还是可以顺着这个思路在以后扩展用的。
      好了,废话不多,先看看留言板有什么功能: 新建留言,评论留言,查看评论,删除留言,站内搜索,分页显示。

      这里先上增加留言版块的代码: 这里面把填写信息和留言的处理加入数据库写在一个里面去了。

      这里面获取用户的信息,判断姓名和留言信息是否为空,以及对留言信息的处理的那几个函数,是重点。

<!--add.php:将用户添写数据写入数据库--------------->
<?php
require_once("sys_conf.inc");

//判断姓名和留言信息是否为空
$errorm="";
if(isset($_POST['name']) or  isset($_POST['message'])) {
//  if (!isset($message) or $message=="" or !isset($name) or $name=="")
    if($_POST['name']=="" or $_POST['message']=="")
    {
        $errorm = "<font color=red>出错了!!!</font>姓名和留言内容必填";
    }
    else
    {
        //连接数据库
        $link_id = mysql_connect($DBHOST, $DBUSER, $DBPWD);
        mysql_select_db($DBNAME);                //选择数据库my_chat

        //获取并处理用户提交信息
        $message = $_POST['message'];
        $name = $_POST['name'];
        $homepage = $_POST['homepage'];
        $email = $_POST['email'];
        $location = $_POST['location'];


        $space = "&nbsp;";
        $time = date("Y年m月d日H小时i分");
        $ip = $_SERVER['REMOTE_ADDR'];
        $message = StripSlashes($message);        //给字符串中按照需要加上"\"和去掉"\",对于某些数据库,必须在要查询的字符加上和去掉"\"之后才能够查询.
        $message = htmlspecialchars($message); //将HTML特殊字符换成它们的名字,例如"<"变成"<".
        $message = nl2br($message);                    //在HTML中的每一个回车前面加上"<BR>".
       // echo($message);
        $guestcontent = "<tr><td>留言内容:<br>".$message;
        $guestcontent = $guestcontent . "<br><font color=#6633FF>留言人大名:    </font>$name";
        if ($email != "")
            $guestcontent = $guestcontent . "<br><font color=#9900CC>电子信箱:</font><a href=\"mailto:$email\">$email</a>" . "$space";
        if ($homepage != "http://")
            $guestcontent = $guestcontent . "<font color=#9900CC>主页:</font><a href=\"$homepage\">$homepage</a>";
        if ($location != "")
            $guestcontent = $guestcontent . "<br><font color=#0000FF>时间:$time 来自:$location  $ip</font>";
        $guestcontent = ereg_replace(chr(10), "", $guestcontent);
        $guestcontent = $guestcontent . "<hr size=1></td></tr>\n";

        //插入数据
        $str = "insert into guestbook (time,ip,name,homepage,location,email,message,content,is_delete)";
        $str = $str . "values('$time','$ip','$name','$homepage','$location','$email','$message','$guestcontent','n')";
        //echo $str;
        $result = mysql_query($str, $link_id); //执行查询
        mysql_close($link_id);
        echo "<script>alert('success!');</script>";
        header("location:booklist.php");
    }
}
?>
<html>
<head>
    <title>站内搜索留言本
    </title>
    <style>
        <!--
        A:link {text-decoration: none ; color:#0000ff}
        A:visited {text-decoration: none; color:#004080}
        A:active {text-decoration: none}
        A:hover {text-decoration: underline; color:#ff0000}
        BODY {FONT-SIZE:10pt}
        TH {FONT-SIZE:10pt}
        TD {FONT-SIZE: 10pt}
        TEXTAREA
        {
            FONT-FAMILY: "宋体";
            FONT-SIZE: 10pt;
        }
        -->
    </style>
</head>
<body bgcolor=#FFFFFD>
<center>
    <?php include  "head.html"?>
    <h2>发表留言</h2>
    <table width="68%" border="1" cellpadding="3" cellspacing="0" bordercolor="#E3E3E3">
        <form method="POST" action="add.php">
            <?php
            //如果输入的用户名或留言信息为空,则报错
            if ($errorm)
            {
                echo "<tr>";
                echo "<td colspan=3 height=32> ";
                echo "$errorm";
                echo "</td>";
                echo "</tr>";
            }
            ?>
            <tr>
                <td width="22%" bgcolor="#F0F0F0"><font color="#000000">姓名<font color="#FF0033">(必填)</font></font></td>
                <td colspan="2" width="78%" bgcolor="#F0F0F0"><font color="#00FF00">
                        <input type="text" name="name" size="40">
                    </font></td>
            </tr>
            <tr>
                <td width="22%" height="29">主页:</td>
                <td colspan="2" height="29" width="78%">
                    <input type="text" name="homepage" size="40" value="http://">
                </td>
            </tr>
            <tr>
                <td width="22%" height="27" bgcolor="#F0F0F0">来自:</td>
                <td colspan="2" height="27" width="78%" bgcolor="#F0F0F0">
                    <input type="text" name="location" size=40">
                </td>
            </tr>
            <tr>
                <td width="22%" height="20">Email:</td>
                <td colspan="2" height="20" width="78%"><font color="#00FF00">
                        <input type="text" name="email" size="40">
                    </font></td>
            </tr>
            <tr>
                <td colspan="3" valign="middle" align="left">
                    <div align="center"><font color="#000000">请留言</font><font color="#FF0033">(必填)</font><font color="#00FF00"><br>
                            <textarea rows="6" name="message" cols="55" wrap="VIRTUAL"></textarea>
                        </font></div>
                </td>
            </tr>
            <tr bgcolor="#F0F0F0">
                <td colspan="3" height="24">
                    <div align="center"><font color="#00FF00">
                            <input type="submit" value="提   交" name="ok">
                            &nbsp;&nbsp;&nbsp;
                            <input type="reset" value="重 写" name="cencel">
                        </font>
                </td>
            </tr>
        </form>
    </table>

</center>
</body>
</html>

      1.这个:

string ereg_replace ( string $pattern , string $replacement , string $string )

      本函数在 string 中扫描与 pattern 匹配的部分,并将其替换为 replacement。

      返回替换后的字符串。(如果没有可供替换的匹配项则会返回原字符串。)

      如果 pattern 包含有括号内的子串,则 replacement 可以包含形如 \digit 的子串,这些子串将被替换为数字表示的的第几个括号内的子串;\0 则包含了字符串的整个内容。最多可以用九个子串。括号可以嵌套,此情形下以左圆括号来计算顺序。

      如果未在 string 中找到匹配项,则 string 将原样返回。

      例如,下面的代码片断输出 “This was a test” 三次:

      Example #1 ereg_replace() 例子:

<?php
$string = "This is a test";
echo str_replace(" is", " was", $string);
echo ereg_replace("( )is", "\\1was", $string);
echo ereg_replace("(( )is)", "\\2was", $string);
?>

      2.mysql_fetch_row() 从和结果标识 data 关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中,偏移量从 0 开始。

      3.PHP stripslashes() 函数
      注释:该函数用于清理从数据库或 HTML 表单中取回的数据。

posted on 2015-04-06 12:18  虽然如此  阅读(973)  评论(1编辑  收藏  举报