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里大量数据循环时内存耗尽的方法

    解决PHP里大量数据循环时内存耗尽的方法

    错误信息提示最大内存已经耗尽,该如何解决呢?下面小编给大家解决PHP里大量数据循环时内存耗尽的问题,需要的朋友可以参考下
    2015-10-10
  • Zend Framework基本页面布局分析

    Zend Framework基本页面布局分析

    这篇文章主要介绍了Zend Framework基本页面布局方法,结合实例形式分析了Zend Framework页面布局的基本步骤与相关设置技巧,需要的朋友可以参考下
    2016-03-03
  • Yii2选项卡的简单使用

    Yii2选项卡的简单使用

    这篇文章主要为大家详细介绍了Yii2选项卡的简单使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • ThinkPHP2.x防范XSS跨站攻击的方法

    ThinkPHP2.x防范XSS跨站攻击的方法

    这篇文章主要介绍了ThinkPHP2.x防范XSS跨站攻击的方法,实例分析了ThinkPHP2.x针对XSS跨站攻击的防范技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • PHP加MySQL消息队列深入理解

    PHP加MySQL消息队列深入理解

    这篇文章主要介绍了PHP+MySQL消息队列深入理解,有感兴趣的同学可以研究下
    2021-02-02
  • php实现的mongodb操作类

    php实现的mongodb操作类

    说到php连mongoDB,不得不先介绍一下php的官方手册,网址在:http://us.php.net/manual/en/book.mongo.php,接下来给大家分享一个本人常用的MONGODB的操作类,详见的数据库操作都有了,小伙伴可以参考下。
    2015-05-05
  • codeigniter中view通过循环显示数组数据的方法

    codeigniter中view通过循环显示数组数据的方法

    这篇文章主要介绍了codeigniter中view通过循环显示数组数据的方法,实例分析了codeigniter中view方法与数组遍历的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • PHP把网页保存为word文件的三种方法

    PHP把网页保存为word文件的三种方法

    最近工作遇到关于生成word的问题,现在总结一下生成word的三种方法的相关资料,需要的朋友可以参考下
    2014-04-04
  • 深入学习微信网址链接解封的防封原理visit_type

    深入学习微信网址链接解封的防封原理visit_type

    这篇文章主要介绍了深入学习微信网址链接解封的防封原理visit_type,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • PHP+jQuery翻板抽奖功能实现

    PHP+jQuery翻板抽奖功能实现

    在电视节目中有一种抽奖形式暂且叫做翻板抽奖,台上有一个墙面,墙面放置几个大方块,主持人或者抽奖者翻开对应的方块即可揭晓中奖结果。类似的抽奖形式还可以应用在WEB中,本文将使用PHP+jQuery为您讲解如何实现翻板抽奖程序。
    2015-10-10

最新评论