本文实例讲述了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 Home/Controller;use Think/Controller;use Think/Model;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 /Home/Model/MsgModel(); 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 Home/Model;use Think/Model;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程序设计有所帮助。
新闻热点
疑难解答