PHP实现的简单留言板功能示例【基于thinkPHP框架】


Posted in PHP onDecember 07, 2018

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

入口文件  文件名 index.php

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

配置文件 文件名 config.php

<?php
return 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

<?php
namespace 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

<?php
namespace 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>

目录结构

PHP实现的简单留言板功能示例【基于thinkPHP框架】

数据库 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框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 输出简单动态WAP页面
Jun 09 PHP
PHP判断变量是否为0的方法
Feb 08 PHP
php无限极分类递归排序实现方法
Nov 11 PHP
使用PHP如何实现高效安全的ftp服务器(二)
Dec 30 PHP
Zend Framework教程之模型Model用法简单实例
Mar 04 PHP
smarty的section嵌套循环用法示例
May 28 PHP
php微信浏览器分享设置以及回调详解
Aug 01 PHP
php实现购物车功能(以大苹果购物网为例)
Mar 09 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
PHP7.1实现的AES与RSA加密操作示例
Jun 15 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
Apr 23 PHP
THINKPHP5.1 Config的配置与获取详解
Jun 08 PHP
laravel5使用freetds连接sql server的方法
Dec 07 #PHP
php多进程模拟并发事务产生的问题小结
Dec 07 #PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
Dec 07 #PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 #PHP
PHP实现简易计算器功能
Aug 28 #PHP
laravel5实现微信第三方登录功能
Dec 06 #PHP
PHP实现简单计算器小程序
Aug 28 #PHP
You might like
php stripslashes和addslashes的区别
2014/02/03 PHP
php文件扩展名判断及获取文件扩展名的N种方法
2015/09/12 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
javascript 数据类型转换(parseInt,parseFloat)
2010/07/20 Javascript
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
2011/01/01 Javascript
js实现点击注册按钮开始读秒倒计时的小例子
2013/05/11 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
JS绘制生成花瓣效果的方法
2015/08/05 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
慕课网题目之js实现抽奖系统功能
2017/09/19 Javascript
第一个Vue插件从封装到发布
2017/11/22 Javascript
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
vue 在单页面应用里使用二级套嵌路由
2020/12/19 Vue.js
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
Python操作Excel插入删除行的方法
2018/12/10 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
2020/09/22 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
Python爬虫小例子——爬取51job发布的工作职位
2020/07/10 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
详解CSS的border边框属性及其在CSS3中的新特性
2016/05/10 HTML / CSS
FORZIERI澳大利亚站:全球顶级奢华配饰精品店
2016/12/31 全球购物
JAVA程序设计笔试题面试题一套
2015/07/28 面试题
党的群众路线教育学习材料
2014/05/12 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
2014年幼儿园教研工作总结
2014/12/04 职场文书
2014年变电站工作总结
2014/12/19 职场文书
婚礼男方父母答谢词
2015/09/29 职场文书
python获取对象信息的实例详解
2021/07/07 Python
游戏《铁拳》动画化!2022年年内播出
2022/03/21 日漫