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 相关文章推荐
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
Apr 12 PHP
PHP 程序员应该使用的10个组件
Oct 31 PHP
php不用内置函数对数组排序的两个算法代码
Feb 08 PHP
PHP备份/还原MySQL数据库的代码
Jan 06 PHP
php设计模式 FlyWeight (享元模式)
Jun 26 PHP
Thinkphp中Create方法深入探究
Jun 16 PHP
ThinkPHP的Widget扩展实例
Jun 19 PHP
php需登录的文件上传管理系统
Mar 21 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
Nov 04 PHP
PHP数组相加操作及与array_merge的区别浅析
Nov 26 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
Apr 12 PHP
PDO实现学生管理系统
Mar 21 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通用检测函数集合
2006/11/25 PHP
php中文字符截取防乱码
2008/03/28 PHP
sphinx增量索引的一个问题
2011/06/14 PHP
Thinkphp单字母函数使用指南
2016/05/08 PHP
centos 7.2下搭建LNMP环境教程
2016/11/20 PHP
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
2009/10/20 Javascript
JSON JQUERY模板实现说明
2010/07/03 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
angularjs中的单元测试实例
2014/12/06 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
Node.js与Sails redis组件的使用教程
2017/02/14 Javascript
bootstrap PrintThis打印插件使用详解
2017/02/20 Javascript
angularjs点击图片放大实现上传图片预览
2017/02/24 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
JS数组实现分类统计实例代码
2018/09/30 Javascript
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
关于Python面向对象编程的知识点总结
2017/02/14 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
Python Django实现layui风格+django分页功能的例子
2019/08/29 Python
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
2012/12/19 HTML / CSS
Max&Co官网:意大利年轻女性时尚品牌
2017/05/16 全球购物
澳大利亚设计的优质鞋类和适合澳大利亚生活方式的服装:Rivers
2019/04/23 全球购物
日语专业推荐信
2013/11/12 职场文书
学生感冒英文请假条
2014/02/04 职场文书
服装设计师职业生涯规划范文
2014/02/28 职场文书
读书活动实施方案
2014/03/10 职场文书
大学生社会实践评语
2014/04/25 职场文书
学习十八大标语
2014/10/09 职场文书
信访维稳工作汇报
2014/10/27 职场文书
教师考核评语大全
2014/12/31 职场文书
死者家属慰问信
2015/03/24 职场文书
win10+anaconda安装yolov5的方法及问题解决方案
2021/04/29 Python
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸