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

 更新时间:2018年12月07日 12:06:55   作者:luckymaoyy  
这篇文章主要介绍了PHP实现的简单留言板功能,结合实例形式分析了基于thinkPHP框架实现的留言板相关配置、数据库操作、sql语句等实现技巧与操作注意事项,需要的朋友可以参考下

本文实例讲述了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 &copy; 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">
    标&nbsp;&nbsp;&nbsp;题: <input type="text" name="title"><span style="color:red;">{$errorInfo.title}</span><br><br>
    信&nbsp;&nbsp;&nbsp;息: <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程序设计有所帮助。

相关文章

  • php 生成Tab键或逗号分隔的CSV

    php 生成Tab键或逗号分隔的CSV

    这篇文章主要介绍了php 生成Tab键或逗号分隔的CSV的相关资料,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • php redis setnx分布式锁简单原理解析

    php redis setnx分布式锁简单原理解析

    这篇文章主要介绍了php redis setnx分布式锁简单原理解析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • 如何使用微信公众平台开发模式实现多客服

    如何使用微信公众平台开发模式实现多客服

    其实微信公众平台的多客服功能已经出来好久了,并且一出来的时候我就已经为自己的公众号实现了,原本以为大家都已经会了,但是今天还是有人问起这个多客服功能怎么使用,我找了下网上也没什么好的教程,今天我就给大家发一篇比较简单易懂的教程吧
    2016-01-01
  • php readfile()修改文件上传大小设置

    php readfile()修改文件上传大小设置

    如果文件上传过大就会产生错误,本篇文章主要介绍了php readfile()修改文件上传大小设置,有兴趣的可以了解一下
    2017-08-08
  • laravel5环境隐藏index.php后缀(apache)的方法

    laravel5环境隐藏index.php后缀(apache)的方法

    今天小编就为大家分享一篇laravel5环境隐藏index.php后缀(apache)的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • Laravel框架路由和控制器的绑定操作方法

    Laravel框架路由和控制器的绑定操作方法

    这篇文章主要介绍了Laravel框架路由和控制器的绑定操作方法,结合实例形式分析了Laravel框架路由与控制器绑定的操作步骤、实现方法与相关注意事项,需要的朋友可以参考下
    2018-06-06
  • 用HTML/JS/PHP方式实现页面延时跳转的简单实例

    用HTML/JS/PHP方式实现页面延时跳转的简单实例

    下面小编就为大家带来一篇用HTML/JS/PHP方式实现页面延时跳转的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • ThinkPHP模版引擎之变量输出详解

    ThinkPHP模版引擎之变量输出详解

    这篇文章主要介绍了ThinkPHP模版引擎的变量输出用法,分析了变量输出的常见用法与使用技巧,非常具有实用价值,需要的朋友可以参考下
    2014-12-12
  • PHP检查URL包含特定字符串实例方法

    PHP检查URL包含特定字符串实例方法

    在本篇文章里,小编给大家分享了使用PHP检查URL是否包含特定字符串的相关操作方法,有需要的朋友们学习下。
    2019-02-02
  • yii2.0实现pathinfo的形式访问的配置方法

    yii2.0实现pathinfo的形式访问的配置方法

    这篇文章主要介绍了yii2.0实现pathinfo的形式访问的配置方法的相关资料,需要的朋友可以参考下
    2016-04-04

最新评论