本文实例讲述了PHP实现的简单留言板功能。分享给大家供大家参考,具体如下:

入口文件  文件名 index.php

<?php// 应用入口文件// 检测PHP环境if(version_compare(PHP_VERSION,"5.3.0","<")) die("require PHP > 5.3.0 !");// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为falsedefine("APP_DEBUG",True);//开发调试模式//define("APP_DEBUG",false);//生产模式// 定义应用目录define("APP_PATH","./Message/");// 引入ThinkPHP入口文件require "./ThinkPHP/ThinkPHP.php";// 亲^_^ 后面不需要任何代码了 就是如此简单

配置文件 文件名 config.php

<?phpreturn array(  //"配置项"=>"配置值"  "SHOW_PAGE_TRACE"=>true,  "DB_TYPE"        => "mysqli",   // 数据库类型  "DB_HOST"        => "127.0.0.1", // 服务器地址  "DB_NAME"        => "msg",     // 数据库名  "DB_USER"        => "root",   // 用户名  "DB_PWD"        => "root",     // 密码  "DB_PORT"        => "3306",    // 端口  "DB_PREFIX"       => "ms_",  // 数据库表前缀);

控制器  文件名 MsgController.class.php

<?phpnamespace HomeController;use ThinkController;use ThinkModel;class MsgController extends Controller{  public function index(){    $msg = D("Msg");    $info = $msg->order("id DESC")->select();    $this->assign("info",$info);    $this->display();  }  public function sendMsg(){    $msg = new HomeModelMsgModel();    if (!empty($_POST)){      $data = $msg->create();      if($data){        $data["user_hobby"] = implode(",",$data["user_hobby"]);        $z = $msg->add($data);        if ($z){          $this->redirect("Msg/sendMsg");        }      }else{        $this->assign("errorInfo",$msg->getError());      }    }    $this->display();  }  public function upd($id){    $msg = D("Msg");    if (!empty($_POST)){      $z = $msg->save($_POST);      if ($z){        $this->redirect("index",array(),2,"修改成功");      }else{        $this->redirect("upd",array("id"=>$id),2,"修改失败");      }    }else{      $info = $msg->find($id);      $this->assign("info",$info);      $this->display();    }  }  public function addMsg(){    $msg = D("Msg");    if (!empty($_POST)){      $z = $msg->add($_POST);      if ($z){        $this->redirect("index",array(),2,"添加成功");      }else{        $this->redirect("addMsg",array(),2,"添加失败");      }    }else{      $this->display();    }  }  public function del($id){    if(D("Msg")->delete($id)){      $this->success("成功",U("index"),2);    }else{      $this->error("失败",U("index"),2);    }  }}

模板  文件名 MsgModel.class.php

<?phpnamespace HomeModel;use ThinkModel;class MsgModel extends Model{  //是否批量验证  protected $patchValidate = true;  protected $_validate = array(    array("title","require","标题不能为空!"), //默认情况下用正则进行验证    array("user","require","留言人不能为空!"),    array("msg","require","内容不能为空!"),  );  protected $_auto = array (    array("status","1"), // 新增的时候把status字段设置为1    array("id","NULL"),    array("admin_user","ms"),    array("replay","NULL"),    array("update_time","time",3,"function"), // 对update_time字段在更新的时候写入当前时间戳    array("send_msg_time","time",3,"function"),  );}

视图  文件名 addMsg.html

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Title</title></head><body><div>  <form action="__SELF__" method="post" >    <table border="1" width="100%" class="table_a">      <tr>        <td>留言时间</td>        <td><input type="text" name="update_time"/></td>      </tr>      <tr>        <td>留言人</td>        <td><input type="text" name="user" /></td>      </tr>      <tr>        <td>标题</td>        <td><input type="text" name="title" /></td>      </tr>      <tr>        <td>内容</td>        <td><input type="text" name="msg" /></td>      </tr>      <tr>        <td>回复</td>        <td><textarea name="replay"></textarea></td>      </tr>      <tr>        <td colspan="2" align="center">          <input type="submit" value="添加">          <a href="__CONTROLLER__/index" rel="external nofollow" rel="external nofollow" ><input type="button" value="返回"></a>        </td>      </tr>    </table>  </form></div></body></html>

视图  文件名 index.html

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>  <title>留言列表 -- HoverTree</title>  <style>    .keleyitable {      width: 800px;    }    .keleyitable table, td, th {      border: 1px solid green;margin-top:10px;    }    .klytd {width:100px;text-align:right    }    .hvttd {      width:500px}  </style></head><body><div style="margin:0px auto;" class="keleyitable"><h2>留言列表</h2>  <tr><td class="klytd"><a href="__CONTROLLER__/addMsg" rel="external nofollow" >添加</a></td><td class="hvttd"></td></tr>  <volist name="info" id="vo">    <table>      <tr><td class="klytd">留言时间:</td><td class="hvttd">{$vo.update_time|date="Y-m-d H:i:s",###}</td></tr>      <tr><td class="klytd">留言人:</td><td class="hvttd">{$vo.user}</td></tr>      <tr><td class="klytd">标题:</td><td class="hvttd">{$vo.title}</td></tr>      <tr><td class="klytd">内容:</td><td class="hvttd">{$vo.msg}</td></tr>      <tr><td class="klytd">回复:</td><td class="hvttd">{$vo.replay}</td></tr>    </table>    <tr><td class="klytd"><a href="__CONTROLLER__/upd/id/{$vo.id}" rel="external nofollow" >修改</a></td><td class="hvttd"></td></tr>    <tr><td class="klytd"><a href="__URL__/del/id/{$vo.id}" rel="external nofollow" >删除</a></td><td class="hvttd"></td></tr>  </volist></div><div style="width:800px;margin:10px auto;font-family:Arial, Helvetica, sans-serif;text-align:center;">HoverTree © 2014 keleyi.com </div><!--最近打算开发一个留言板,asp.net的开源项目,http://hovertree.codeplex.com --></body></html>

视图  文件名 sendMsg.html

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Title</title></head><body>  <form action="" method="post">    标   题: <input type="text" name="title"><span style="color:red;">{$errorInfo.title}</span><br><br>    信   息: <input type="text" name="msg"><span style="color:red;">{$errorInfo.msg}</span><br><br>    留言人: <input type="text" name="user"><span style="color:red;">{$errorInfo.user}</span><br><br>    <input type="submit" value="提交">  </form></body></html>

视图 文件名  upd.html

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Title</title></head><body><div>  <form action="__SELF__" method="post" >    <input type="hidden" name="id" value="{$info.id}">    <table border="1" width="100%" class="table_a">      <tr>        <td>留言时间</td>        <td><input type="text" name="update_time" value="{$info.update_time}" /></td>      </tr>      <tr>        <td>留言人</td>        <td><input type="text" name="user" value="{$info.user}" /></td>      </tr>      <tr>        <td>标题</td>        <td><input type="text" name="title" value="{$info.title}" /></td>      </tr>      <tr>        <td>内容</td>        <td><input type="text" name="msg" value="{$info.msg}" /></td>      </tr>      <tr>        <td>回复</td>        <td><textarea name="replay">{$info.replay}</textarea></td>      </tr>      <tr>        <td colspan="2" align="center">          <input type="submit" value="修改">          <a href="__CONTROLLER__/index" rel="external nofollow" rel="external nofollow" ><input type="button" value="返回"></a>        </td>      </tr>    </table>  </form>  </div></body></html>

目录结构

数据库 sql语句

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";SET time_zone = "+00:00";/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;/*!40101 SET NAMES utf8 */;---- 資料庫: `msg`---- ------------------------------------------------------------ 表的結構 `ms_msg`--CREATE TABLE IF NOT EXISTS `ms_msg` ( `id` int(10) NOT NULL AUTO_INCREMENT COMMENT "主键", `admin_user` varchar(100) NOT NULL COMMENT "管理员", `update_time` int(10) NOT NULL COMMENT "更新时间", `status` int(2) NOT NULL COMMENT "状态", `send_msg_time` int(10) NOT NULL COMMENT "留言时间", `user` varchar(100) NOT NULL COMMENT "留言人", `title` varchar(100) NOT NULL COMMENT "标题", `msg` varchar(200) NOT NULL COMMENT "内容", `replay` varchar(200) NOT NULL COMMENT "回复", PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT="留言表" AUTO_INCREMENT=19 ;---- 轉存資料表中的資料 `ms_msg`--INSERT INTO `ms_msg` (`id`, `admin_user`, `update_time`, `status`, `send_msg_time`, `user`, `title`, `msg`, `replay`) VALUES(1, "ms", 1479449110, 1, 1479449110, "1", "拉克丝的减肥", "对方科目了", "NULL"),(7, "", 321423432, 0, 0, "kljflwk", "kjsdfnlk", "nlkdsjfn", "kljnf"),(3, "ms", 1479451017, 1, 1479451017, "1", "轻松的发生我", "沃尔沃飞", "NULL"),(8, "ms", 1479544687, 1, 1479544687, "", "qwe", "", "NULL"),(9, "ms", 1479544693, 1, 1479544693, "qwe", "qwe", "qwe", "NULL"),(10, "ms", 1479544970, 1, 1479544970, "qwe", "qwe", "qwe", "NULL"),(11, "ms", 1479544979, 1, 1479544979, "12", "12", "12", "NULL"),(12, "ms", 1479545029, 1, 1479545029, "12", "12", "12", "NULL"),(13, "ms", 1479546357, 1, 1479546357, "12", "12", "12", "NULL"),(14, "ms", 1479547163, 1, 1479547163, "12", "12", "12", "NULL"),(16, "ms", 1479547667, 1, 1479547667, "12", "12", "123", "NULL"),(17, "ms", 2147483647, 1, 1479547682, "上来昆明3", "说的了付款", "蓝山咖啡", "123213");/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。